Skip to content

Commit 131598f

Browse files
committed
[level 3] Title: 등굣길, Time: 0.60 ms, Memory: 69.7 MB -BaekjoonHub
1 parent 98005a2 commit 131598f

File tree

2 files changed

+26
-27
lines changed

2 files changed

+26
-27
lines changed

프로그래머스/3/42898. 등굣길/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# [level 3] 등굣길 - 42898
22

3-
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42898#)
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42898)
44

55
### 성능 요약
66

7-
메모리: 54.6 MB, 시간: 0.48 ms
7+
메모리: 69.7 MB, 시간: 0.60 ms
88

99
### 구분
1010

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

1717
### 제출 일자
1818

19-
2025년 09월 17일 22:30:56
19+
2025년 09월 19일 22:17:41
2020

2121
### 문제 설명
2222

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,38 @@
11
import java.util.*;
22

33
class Solution {
4+
boolean[][] visited;
5+
int[] dx = {-1,1,0,0};
6+
int[] dy = {0,0,-1,1};
7+
48
public int solution(int m, int n, int[][] puddles) {
5-
int[][] dp = new int[m][n];
6-
boolean[][] puddle = new boolean[m][n];
7-
for(int[] p : puddles) {
8-
int x = p[0] - 1;
9-
int y = p[1] - 1;
10-
puddle[x][y] = true;
11-
}
12-
13-
dp[0][0] = 0;
9+
int[][] maps = new int[n+1][m+1]; // 지도
10+
visited = new boolean[n+1][m+1];
1411

15-
for(int i = 1; i < m; i ++){
16-
// 가는길이 멀쩡하면 전부 1
17-
if(!puddle[i][0]) dp[i][0] = 1;
18-
else break;
12+
for(int[] puddle : puddles) {
13+
int px = puddle[0];
14+
int py = puddle[1];
15+
visited[py][px] = true;
1916
}
2017

21-
for(int i = 1; i < n; i ++){
22-
// 가는길이 멀쩡하면 전부 1
23-
if(!puddle[0][i]) dp[0][i] = 1;
24-
else break;
18+
for(int i = 1; i < n+1 ; i ++) {
19+
if(visited[i][1]) break;
20+
maps[i][1] = 1;
21+
}
22+
for(int i = 1; i < m+1 ; i ++) {
23+
if(visited[1][i]) break;
24+
maps[1][i] = 1;
2525
}
2626

27-
28-
for(int i = 1; i < m; i ++){
29-
for(int j = 1; j < n ; j ++){
30-
if(puddle[i][j]) continue;
31-
32-
dp[i][j] = (dp[i-1][j] + dp[i][j-1])% 1000000007;
27+
for(int i = 2; i < n+1; i++){
28+
for(int j = 2; j < m+1; j++) {
29+
if(!visited[i][j]){
30+
maps[i][j] = (maps[i-1][j] + maps[i][j-1]) % 1000000007;
31+
}
3332
}
3433
}
3534

36-
int answer = dp[m-1][n-1];
35+
int answer = maps[n][m];
3736
return answer;
3837
}
3938
}

0 commit comments

Comments
 (0)