반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh
그냥 while 여러개 쓸 것 없이 방향 바꿔가면서 반복하면 끝.
쉬운 문제인데 데이터가 너무 커서 확인하는데 애썼다.
#include<iostream>
#include<string.h>
using namespace std;
int arr[100][100];
bool ladder(int y, int x)
{
int dir = 0; //0은 아래, 1->왼 2->오른
while (1)
{
if (y >= 99)
{
if (arr[y][x] == 2)
{
return true;
}
return false;
}
if (dir == 0)
{
y++;
if (x == 0)
{
if (arr[y][x + 1])
{
dir = 2;
}
}
else if (x > 0 && x < 99)
{
if (arr[y][x + 1])
{
dir = 2;
}
else if (arr[y][x - 1])
{
dir = 1;
}
}
else if (x == 99)
{
if (arr[y][x - 1])
{
dir = 1;
}
}
}
else if (dir == 1)
{
x--;
if (arr[y + 1][x])
{
dir = 0;
}
}
else
{
x++;
if (arr[y + 1][x])
{
dir = 0;
}
}
}
}
int main(int argc, char** argv)
{
for (int test_case = 1; test_case <= 10; test_case++)
{
int tc;
cin >> tc;
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
cin >> arr[i][j];
}
}
int ans = 0;
for (int j = 0; j < 100; j++)
{
if (arr[0][j])
{
if (ladder(0, j))
{
ans = j;
}
}
}
cout << "#" << tc << " " << ans << endl;
}
return 0;
}
반응형
'Algorithm' 카테고리의 다른 글
SW 1824. 혁진이의 프로그램 검증 (0) | 2020.03.19 |
---|---|
1249. [S/W 문제해결 응용] 4일차 - 보급로 (0) | 2020.03.18 |
[S/W 문제해결 기본] 4일차 - 길찾기 (0) | 2020.03.16 |
SW academy 8993. 하지 추측 (0) | 2020.03.15 |
백준 2167번 2차원 배열의 합 (0) | 2020.03.13 |