✏️ 문제
각 칸마다 색이 칠해진 2차원 격자 보드판이 있습니다. 그중 한 칸을 골랐을 때, 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수를 구하려고 합니다.
보드의 각 칸에 칠해진 색깔 이름이 담긴 이차원 문자열 리스트 board와 고른 칸의 위치를 나타내는 두 정수 h, w가 주어질 때 board[h][w]와 이웃한 칸들 중 같은 색으로 칠해져 있는 칸의 개수를 return 하도록 solution 함수를 완성해 주세요.
이웃한 칸들 중 몇 개의 칸이 같은 색으로 색칠되어 있는지 확인하는 과정은 다음과 같습니다.
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🤖 알고리즘
#배열 #탐색
🤯 풀이 방법
기준 칸에서 상, 하, 좌, 우를 탐색해야 하기 때문에 몇칸씩 움직이면 되는지 2차원 배열을 만들어 둔다.
그 배열을 순회하면서 주변 칸의 좌표를 찾고 0 이하나 전체 배열 길이보다 긴 값인 경우인지 확인하고
배열 안에 있는 좌표인 경우 기준 칸의 색과 같은지 확인한다.
** 무지성 == 대신 내용 비교할 땐 equal 쓰자!!
👾 구현 코드 (자바)
class Solution {
public int solution(String[][] board, int h, int w) {
int answer = 0;
int l = board.length;
String color = board[h][w]; // 비교할 기준 칸의 색
// 위, 아래, 왼쪽, 오른쪽 x, y 증감 값
int[][] move = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};
for (int[] m : move) {
int hh = h - m[0];
int ww = w - m[1];
// 인덱스 범위 벗어나지 않는지 체크
if (hh < 0 || hh >= l || ww < 0 || ww >= l) {
System.out.println("break?");
continue;
} else if (board[hh][ww].equals(color)) {
answer++;
}
}
return answer;
}
}
'Algorithm > programmers' 카테고리의 다른 글
[programmers] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (java) (1) | 2025.04.16 |
---|---|
[programmers][힙Heap] Lv.2 더 맵게 (java) (0) | 2025.02.11 |
[programmers] [PCCP 기출문제] 1번 / 붕대 감기 (java) (1) | 2024.11.21 |
[programmers] [PCCP 기출문제] 1번 / 동영상 재생기 (python) (0) | 2024.11.18 |
[programmers] 2018 KAKAO BLIND RECRUITMENT [1차] 뉴스 클러스터링 (python) (0) | 2023.08.28 |