https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&
풀이:
- int[100][100] 배열에 사다리를 저장
- 사다리 끝에 있는 도착점을 찾음
- 사다리 위로 올라가며 옆에 길이 있나 확인
- 맨 위에 x값을 출력
코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <iostream>
#include <string>
using namespace std;
int lineup(int n[100][100], int yc, int xc, bool left, bool right) {
if (yc == 0)
return xc;
if (xc > 0 && right == false && n[yc][xc - 1] == 1)
return lineup(n, yc, xc - 1,true,false);
else if (xc < 99 && left==false && n[yc][xc + 1] == 1)
return lineup(n, yc, xc + 1,false,true);
else
return lineup(n, yc - 1, xc,false,false);
}
int main(void) {
for (int t = 1; t < 11; t++) {
int a;
cin >> a;
int line[100][100];
int count;
for (int i = 0; i < 100; i++) {
for (int y = 0; y < 100; y++) {
cin >> line[i][y];
}
}
for (int i = 0; i < 100; i++) {
if (line[99][i] == 2) {
count = i;
break;
}
}
cout << "#" << t << " " << lineup(line, 98, count, false, false) << endl;
}
return 0;
}
}
|