Contents

[sw]사다리

Contents

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&

풀이:

  1. int[100][100] 배열에 사다리를 저장
  2. 사다리 끝에 있는 도착점을 찾음
  3. 사다리 위로 올라가며 옆에 길이 있나 확인
  4. 맨 위에 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;
}
}