Skip to content

Commit d8f97de

Browse files
committed
[level 2] Title: 게임 맵 최단거리, Time: 9.61 ms, Memory: 58.3 MB -BaekjoonHub
1 parent 7c2bf4c commit d8f97de

2 files changed

Lines changed: 30 additions & 28 deletions

File tree

프로그래머스/2/1844. 게임 맵 최단거리/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
### 성능 요약
66

7-
메모리: 54.4 MB, 시간: 9.55 ms
7+
메모리: 58.3 MB, 시간: 9.61 ms
88

99
### 구분
1010

@@ -16,7 +16,7 @@
1616

1717
### 제출 일자
1818

19-
2025년 05월 23일 10:04:24
19+
2025년 05월 24일 20:51:54
2020

2121
### 문제 설명
2222

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
11
import java.util.*;
2+
23
class Solution {
34
public int solution(int[][] maps) {
4-
int answer = 0;
5-
// BFS로 최단거리 구하기
5+
//BFS로 최단 거리 구하기
6+
7+
//상하좌우 움직임
8+
int[] dr = {1,-1,0,0};
9+
int[] dc = {0,0,-1,1};
610

7-
// 시작 점 예약 (0,0, 거리 1)
8-
int[] dr = {1,-1,0,0};
9-
int[] dc = {0,0,1,-1};
1011
int n = maps.length;
1112
int m = maps[0].length;
12-
Queue<int[]> queue = new ArrayDeque<>();
13-
boolean[][] visited = new boolean[n][m];
14-
1513

16-
queue.offer(new int[]{0,0,1});
17-
visited[0][0] = true;
14+
Queue<int[]> q = new ArrayDeque<>();
15+
boolean[][] v = new boolean[n][m];
16+
q.offer(new int[]{0,0,1});
1817

19-
while(!queue.isEmpty()){
20-
//현재 노드 방문
21-
int[] cur = queue.poll();
18+
while(!q.isEmpty()){
19+
//현재 노드 꺼내기
20+
int[] cur = q.poll();
2221
int r = cur[0], c = cur[1], dist = cur[2];
2322

24-
25-
//if 도착지 도달하면 Return dist;
26-
if(r == n-1 && c == m -1) return dist;
27-
//다음 노드 예약
23+
//목적지 도달 시 거리 반환
24+
if(r == n -1 && c == m - 1) return dist;
25+
//다음 노드 찾기
2826
for(int i = 0; i < 4; i++){
29-
int nr = r +dr[i], nc = c + dc[i];
30-
if(nr >= 0&& nr < n && nc >= 0 && nc < m && maps[nr][nc] == 1){
31-
if(!visited[nr][nc]){
32-
queue.offer(new int[]{nr,nc,dist + 1});
33-
visited[nr][nc] =true;
27+
int nr = r + dr[i];
28+
int nc = c + dc[i];
29+
//다음 노드 유효성 검사
30+
if(nr >= 0 && nr < n && nc >= 0 && nc < m && maps[nr][nc] == 1){
31+
if(!v[nr][nc]){
32+
q.offer(new int[]{nr,nc,dist + 1});
33+
v[nr][nc] = true;
3434
}
3535
}
36-
36+
3737
}
38-
38+
39+
40+
41+
3942
}
4043

41-
42-
44+
4345
return -1;
4446
}
4547
}

0 commit comments

Comments
 (0)