1. 문제 풀이 아이디어
- 문제에 주어진 의사코드를 활용하여 해결할 수 있다.
2. 나의 정답 코드
class Solution {
public int solution(String[][] board, int h, int w) {
int answer = 0;
int[][] dir = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
for (int i = 0; i < 4; i++) {
int nx = h + dir[i][0];
int ny = w + dir[i][1];
if (nx < 0 || ny < 0 || nx >= board.length || ny >= board[0].length) {
continue;
}
if (board[nx][ny].equals(board[h][w]))
answer++;
}
return answer;
}
}
3. 정리
- 상하좌우의 방향을 나타내는 값을
dir
2차원 배열에 저장한다.
- 다음 위치의 좌표를
nx
와ny
로 계산한 뒤, 해당 좌표가 범위를 벗어나면 넘어간다.
nx, ny
위치의board
값과h, w
위치의board
값이 같으면answer
를 증가시킨다.
- 이 과정을 반복하여 문제를 해결한다.
Share article