-
[SWEA] #1210 _ Ladder1Problem Solving/SWEA 2019. 8. 28. 22:01
[Ladder1] https://swexpertacademy.com/main/code/problem/problemDetail.do
어쨋든 도착지는 한 군데이다.
따라서, 도착지부터 거꾸로 조건에 맞는 방법으로 올라가서 출발지를 찾으면 된다.
[ 소스 코드 ]
#include <cstdio> #include <algorithm> #define MAX 100 using namespace std; int dx[] = { -1, 1, 0 }, dy[] = { 0, 0, -1 }; int map[MAX + 1][MAX + 1]; int solve(int y, int x); int main() { int test_num; pair<int, int> dest; for (int i = 0; i < 10; i++) { scanf("%d", &test_num); for (int j = 0; j < MAX; j++) { for (int k = 0; k < MAX; k++) { scanf("%d", &map[j][k]); if (map[j][k] == 2) dest = make_pair(j, k); } } printf("#%d %d\n", test_num, solve(dest.first, dest.second)); } return 0; } int solve(int y, int x) { int tmp_x = x, tmp_y = y; int chk[MAX + 1][MAX + 1] = { 0, }; chk[y][x] = 1; while (tmp_y != 0) { for (int i = 0; i < 3; i++) { tmp_x = x + dx[i]; tmp_y = y + dy[i]; if (tmp_x < 0 || tmp_y < 0 || tmp_x >= MAX || tmp_y >= MAX) continue; if (chk[tmp_y][tmp_x]) continue; if (map[tmp_y][tmp_x]) { chk[tmp_y][tmp_x] = 1; x = tmp_x; y = tmp_y; break; } } } return tmp_x; }
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] #4014 _ 활주로 건설 (0) 2019.08.28 [SWEA] #2112 _ 보호 필름 (0) 2019.08.28 [SWEA] #1209 _ Sum (0) 2019.08.12 [SWEA] #5656 _ 벽돌 깨기 (0) 2019.08.04 [SWEA] #5644 _ 무선 충전 (0) 2019.08.04 댓글