#include <stdio.h>
#define ARRAY_SIZE 100
enum { EMPTY, LADDER, END };
int deltaX[] = { 0, -1, 1 }; // 하좌우
int deltaY[] = { -1, 0, 0 }; // 하좌우
int arr[ARRAY_SIZE][ARRAY_SIZE] = { 0, };
int v[ARRAY_SIZE][ARRAY_SIZE] = { 0, };
int endX = 99;
int endY = 99;
int startX = 0;
void FindStartX(int y, int x) {
if (y == 0) { // 시작점 y 행까지 도착
startX = x;
return;
}
// 현재 위치에서 이동할 수 있는 4방향에 대해
int left = x - 1;
int right = x + 1;
if (left >= 0 && arr[y][left] == LADDER) {
arr[y][x] = EMPTY;
FindStartX(y, left);
}
else if (right < ARRAY_SIZE && arr[y][right] == LADDER) {
arr[y][x] = EMPTY;
FindStartX(y, right);
}
else {
FindStartX(y - 1, x);
}
}
int main(void)
{
int test_case = 0;
int T = 10;
freopen("input.txt", "r", stdin);
setbuf(stdout, NULL);
for (test_case = 1; test_case <= T; ++test_case)
{
int tc = 0;
char data = 0;
startX = 0;
scanf("%d ", &tc);
for (int y = 0; y < ARRAY_SIZE; y++) {
for (int x = 0; x < ARRAY_SIZE; x++) {
scanf("%c ", &data);
if (data == '0') {
arr[y][x] = EMPTY;
}
else if (data == '1') {
arr[y][x] = LADDER;
}
else if (data == '2') {
arr[y][x] = END;
endX = x;
endY = y;
}
}
}
FindStartX(endY, endX);
// 표준출력(화면)으로 답안을 출력합니다.
printf("#%d %d\n", tc, startX);
}
return 0; //정상종료시 반드시 0을 리턴해야 합니다.
}
댓글