각 칸마다 색이 칠해진 2차원 격자 보드판이 있습니다. 그중 한 칸을 골랐을 때, 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수를 구하려고 합니다.
보드의각칸에칠해진색깔이름이담긴이차원문자열리스트board와고른칸의위치를나타내는두정수h, w가주어질때 board[h][w]와이웃한칸들중같은색으로칠해져있는칸의개수를 return 하도록 solution 함수를완성해주세요.
제한 사항
1 ≤ board의 길이 ≤ 7
board의 길이와 board[n]의 길이는 동일합니다.
0 ≤ h, w < board의 길이
1 ≤ board[h][w]의길이 ≤ 10
board[h][w]는영어소문자로만이루어져있습니다.
문제 풀이
접근 방법
이웃한 칸 확인 -> 타겟 칸 주변 좌표 배열 선언
보드칸 내에서 확인 (이웃칸 범위 제한)
코드
public class P_250125 {
public static int solution(String[][] board, int h, int w) {
// 타겟 칸 주변 상하좌우 이동할 좌표
int[][] directions = {{-1,0}, {0,1}, {1,0}, {0,-1}};
// 같은 색상 개수
int count = 0;
// 타겟 칸 색깔
String targetColor = board[h][w];
int h_see, w_see;
for(int[] direction : directions) {
h_see = h + direction[0];
w_see = w + direction[1];
// 확인할 칸이 보드 내에 존재하는지
if(0<= h_see && h_see<board.length && 0<=w_see && w_see<board.length) {
// 이웃칸과 타겟 칸 색이 같으면 카운트 추가
if(board[h_see][w_see].equals(targetColor)) {
count++;
}
}
}
return count;
}
}