Skip to content

Commit 4ef245c

Browse files
committed
96번 알리바바와 40인 도둑 수강 완료
1 parent b97a704 commit 4ef245c

1 file changed

Lines changed: 71 additions & 0 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
## 문제)
2+
알리바바는 40인의 도둑으로부터 금화를 훔쳐 도망치고 있습니다.
3+
알리바바는 도망치는 길에 평소에 잘 가지 않던 계곡의 돌다리로 도망가고자 한다.
4+
계곡의 돌다리는 N×N개의 돌들로 구성되어 있다. 각 돌다리들은 높이가 서로 다릅니다.
5+
해당 돌다리를 건널때 돌의 높이 만큼 에너지가 소비됩니다. 이동은 최단거리 이동을 합니다.
6+
즉 현재 지점에서 오른쪽 또는 아래쪽으로만 이동해야 합니다.
7+
N*N의 계곡의 돌다리 격자정보가 주어지면 (1, 1)격자에서 (N, N)까지 가는데 드는 에너지의
8+
최소량을 구하는 프로그램을 작성하세요.
9+
만약 N=3이고, 계곡의 돌다리 격자 정보가 다음과 같다면
10+
11+
(1, 1)좌표에서 (3, 3)좌표까지 가는데 드는 최소 에너지는 3+2+3+4+2=14이다.
12+
13+
### 입력 설명
14+
▣ 입력설명
15+
첫 번째 줄에는 자연수 N(1<=N<=20)이 주어진다.
16+
두 번째 줄부터 계곡의 N*N 격자의 돌다리 높이(10보다 작은 자연수) 정보가 주어진다.
17+
18+
### 출력 설명
19+
첫 번째 줄에 (1, 1)출발지에서 (N, N)도착지로 가기 위한 최소 에너지를 출력한다.
20+
21+
### 입력 예제
22+
5\
23+
3 7 2 1 9\
24+
5 8 3 9 2\
25+
5 3 1 2 3\
26+
5 4 3 2 1\
27+
1 7 5 2 4
28+
29+
30+
### 출력 예제
31+
25
32+
33+
### 모범 답안
34+
``` Cpp
35+
#include <iostream>
36+
#include <fstream>
37+
#include <vector>
38+
#include <algorithm>
39+
using namespace std;
40+
int arr[21][21], dy[21][21];
41+
int main() {
42+
ios_base::sync_with_stdio(false);
43+
ifstream cin;
44+
cin.open("input.txt");
45+
int n = 0, cnt = 0;
46+
cin >> n;
47+
for (int i = 0; i < n; i++) {
48+
for (int j = 0; j < n; j++) {
49+
cin >> arr[i][j];
50+
}
51+
}
52+
dy[0][0] = arr[0][0];
53+
for (int i = 0; i < n; i++) {
54+
// 0번째 열의 경우 현재 dy의 값은 바로 왼쪽에 있는 dy값 + 현재 arr 값
55+
dy[0][i] = dy[0][i - 1] + arr[0][i];
56+
// 0번째 행의 경우 현재 dy의 값은 바로 위쪽에 있는 dy값 + 현재 arr 값
57+
dy[i][0] = dy[i - 1][0] + arr[i][0];
58+
}
59+
for (int i = 1; i < n; i++) {
60+
for (int j = 1; j < n; j++) {
61+
// dy(i,j) 좌표에 있는 값은 dy의 위쪽 또는 왼쪽에 있는 값 중 작은 값 + 현재 arr(i, j) 값
62+
dy[i][j] = min(dy[i - 1][j], dy[i][j - 1]) + arr[i][j];
63+
}
64+
}
65+
cout << dy[n - 1][n - 1];
66+
return 0;
67+
}
68+
69+
// dy[i][j]의 의미는 출발좌표(0,0)에서 (i,j)까지 가는 데 들어가는 최소 비용
70+
71+
```

0 commit comments

Comments
 (0)