https://school.programmers.co.kr/learn/courses/30/lessons/1844
최단 거리 이므로 bfs 사용
출발점의 depth가 0이 아닌 1임에 주의
import java.util.*;
class Solution {
int[][] maps;
int[] dr = {-1,1,0,0}, dc = {0,0,-1,1};
boolean[][] vst;
Queue<int[]> q = new ArrayDeque<>();
int solve() {
int R = maps.length;
int C = maps[0].length;
int ER = R - 1;
int EC = C - 1;
vst = new boolean[R][C];
q.offer(new int[]{0, 0, 1});
vst[0][0] = true;
while(!q.isEmpty()) {
int[] info = q.poll();
int r = info[0];
int c = info[1];
int dep = info[2];
if(r == ER && c == EC)
return dep;
for(int i=0; i<4; i++) {
int tr = r + dr[i];
int tc = c + dc[i];
if(tr >= 0 && tr < R && tc >= 0 && tc < C && !vst[tr][tc] && maps[tr][tc] != 0) {
vst[tr][tc] = true;
q.offer(new int[]{tr, tc, dep + 1});
}
}
}
return -1;
}
public int solution(int[][] maps) {
this.maps = maps;
return solve();
}
}
'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글
[lv2] 땅따먹기 (0) | 2024.11.23 |
---|---|
[lv2] 롤케이크 자르기 (0) | 2024.11.19 |
[lv2] 영어 끝말잇기 (1) | 2024.11.19 |
[lv2] 숫자의 표현 (2) | 2024.11.19 |
[lv2] JadenCase 문자열 만들기 (0) | 2024.11.19 |