728x90
programmers.co.kr/learn/courses/30/lessons/1844
문제 풀이
* BFS
import java.util.*;
public class Solution {
class Path {
int x, y, c;
public Path(int x, int y, int c) {
this.x = x;
this.y = y;
this.c = c;
}
}
public int solution(int[][] maps) {
int n = maps.length, m = maps[0].length;
int x = 0, y = 0, c, nx, ny, nc = 0;
int dx[] = { 0, 1, 0, -1 }, dy[] = { 1, 0, -1, 0 }, d;
Queue<Path> q = new ArrayDeque<>(); Path p;
boolean v[][] = new boolean[n][m];
q.add(new Path(0, 0, 1));
v[x][y] = true;
while (!q.isEmpty()) {
p = q.remove();
x = p.x; y = p.y; c = p.c;
for (d = 0; d < 4; ++d) {
nx = x + dx[d]; ny = y + dy[d];
if (nx < 0 || nx >= n || ny < 0 || ny >= m || v[nx][ny] || maps[nx][ny] == 0)
continue;
nc = c + 1;
if (nx == n - 1 && ny == m - 1)
return nc;
q.add(new Path(nx, ny, nc));
v[nx][ny] = true;
}
}
return -1;
}
}
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 프로그래머스 ( Programmers )' 카테고리의 다른 글
[프로그래머스(Programmers)][자바(java)] (Lv3) 스티커 모으기(2) (0) | 2021.03.08 |
---|---|
[프로그래머스(Programmers)][자바(java)] (Lv3) 합승 택시 요금 (0) | 2021.03.08 |
[프로그래머스(Programmers)][자바(java)] (Lv3) 블록 이동하기 (0) | 2021.03.01 |
[프로그래머스(Programmers)][자바(java)] (Lv3) 기둥과 보 설치 (0) | 2021.02.28 |
[프로그래머스(Programmers)][자바(java)] (Lv3) 외벽 점검 (0) | 2021.02.19 |