Skip to content

Commit e22a448

Browse files
committed
[level 3] Title: 등굣길, Time: 0.65 ms, Memory: 72.3 MB -BaekjoonHub
1 parent d58e17a commit e22a448

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# [level 3] 등굣길 - 42898
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42898)
4+
5+
### 성능 요약
6+
7+
메모리: 72.3 MB, 시간: 0.65 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 동적계획법(Dynamic Programming)
12+
13+
### 채점결과
14+
15+
정확성: 50.0<br/>효율성: 50.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 09월 17일 22:26:34
20+
21+
### 문제 설명
22+
23+
<p>계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. </p>
24+
25+
<p>아래 그림은 m = 4, n = 3 인 경우입니다.</p>
26+
27+
<p><img src="https://grepp-programmers.s3.amazonaws.com/files/ybm/056f54e618/f167a3bc-e140-4fa8-a8f8-326a99e0f567.png" title="" alt="image0.png"></p>
28+
29+
<p>가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. </p>
30+
31+
<p>격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. <strong>오른쪽과 아래쪽으로만 움직여</strong> 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요.</p>
32+
33+
<h5>제한사항</h5>
34+
35+
<ul>
36+
<li>격자의 크기 m, n은 1 이상 100 이하인 자연수입니다.
37+
38+
<ul>
39+
<li>m과 n이 모두 1인 경우는 입력으로 주어지지 않습니다.</li>
40+
</ul></li>
41+
<li>물에 잠긴 지역은 0개 이상 10개 이하입니다.</li>
42+
<li>집과 학교가 물에 잠긴 경우는 입력으로 주어지지 않습니다.</li>
43+
</ul>
44+
45+
<h5>입출력 예</h5>
46+
<table class="table">
47+
<thead><tr>
48+
<th>m</th>
49+
<th>n</th>
50+
<th>puddles</th>
51+
<th>return</th>
52+
</tr>
53+
</thead>
54+
<tbody><tr>
55+
<td>4</td>
56+
<td>3</td>
57+
<td>[[2, 2]]</td>
58+
<td>4</td>
59+
</tr>
60+
</tbody>
61+
</table>
62+
<h5>입출력 예 설명</h5>
63+
64+
<p><img src="https://grepp-programmers.s3.amazonaws.com/files/ybm/32c67958d5/729216f3-f305-4ad1-b3b0-04c2ba0b379a.png" title="" alt="image1.png"></p>
65+
66+
67+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(int m, int n, int[][] puddles) {
5+
int temp = m;
6+
m = n;
7+
n = temp;
8+
9+
int[][] dp = new int[n][m];
10+
boolean[][] puddle = new boolean[n][m];
11+
for(int[] p : puddles) {
12+
int x = p[0] - 1;
13+
int y = p[1] - 1;
14+
puddle[x][y] = true;
15+
}
16+
17+
dp[0][0] = 0;
18+
for(int i = 1; i < n; i ++){
19+
// 가는길이 멀쩡하면 전부 1
20+
if(!puddle[i][0]) dp[i][0] = 1;
21+
else break;
22+
}
23+
24+
for(int i = 1; i < m; i ++){
25+
// 가는길이 멀쩡하면 전부 1
26+
if(!puddle[0][i]) dp[0][i] = 1;
27+
else break;
28+
}
29+
30+
31+
for(int i = 1; i < n; i ++){
32+
for(int j = 1; j < m ; j ++){
33+
if(puddle[i][j]) continue;
34+
35+
dp[i][j] = (dp[i-1][j] + dp[i][j-1])% 1000000007;
36+
}
37+
}
38+
39+
int answer = dp[n-1][m-1];
40+
return answer;
41+
}
42+
}

0 commit comments

Comments
 (0)