문제 링크
문제 요약
풀이 흐름
코드
풀이 언어 : JAVA
int[][] dirs = {{-1, 0},{0, 1},{1, 0},{0, -1}};
int[][] visited = new int[101][101];
int n, m;
public void bfs(int[][] maps, Queue<int[]> q) {
while(!q.isEmpty()) {
int[] pos = q.poll();
int x = pos[0];
int y = pos[1];
if(x == n-1 && y == m-1) {
break;
}
for(int[] d : dirs) {
int nx = x + d[0];
int ny = y+ d[1];
if(0 <= nx && nx < n && 0 <= ny && ny < m
&& maps[nx][ny] == 1 && visited[nx][ny] == 0) {
q.add(new int[] { nx, ny });
visited[nx][ny] = visited[x][y] + 1;
}
}
}
}
public int solution(int[][] maps) {
n = maps.length;
m = maps[0].length;
Queue<int[]> q = new LinkedList<int[]>();
q.add(new int[] { 0, 0 });
visited[0][0] = 1;
bfs(maps, q);
if(visited[n-1][m-1] == 0) {
return -1;
}
return visited[n-1][m-1];
}