[SWEA 1210] Ladder1
출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh
#include <iostream>
#include <algorithm>
#include <memory.h>
using namespace std;
int result;
int arr[100][102], a, b;
bool visited[100][102];
void cal(int ii, int jj)
{
if (ii == 0)
{
result = jj - 1;
return;
}
visited[ii][jj] = true;
if (arr[ii][jj + 1] && !visited[ii][jj+1]) cal(ii, jj + 1);
else if (arr[ii][jj - 1] && !visited[ii][jj - 1]) cal(ii, jj - 1);
else if (arr[ii-1][jj] && !visited[ii-1][jj]) cal(ii-1, jj);
}
int main()
{
int T; int t;
T = 10;
while (T--)
{
cin >> t; result = 0; memset(arr, 0, sizeof(arr)); memset(visited, false, sizeof(visited));
for (int i = 0; i < 100; i++)for (int j = 1; j <= 100; j++)
{
cin >> arr[i][j];
if (arr[i][j] == 2) cal(i, j);
}
cout << "#" << t << " " << result << endl;
}
return 0;
}