주어진 문자의 의미에 따라 하나씩 이동하였다.
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #include <stdio.h> int main(void) { int test_case; scanf("%d\n", &test_case); for (int z = 1; z<= test_case; z++) { int h, w; scanf("%d %d\n", &h,&w); char map[21][21] = { {0,} , }; for (int i = 0; i < h; i++) scanf("%s", map[i]); int n; scanf("%d\n", &n); int x, y; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (map[i][j] == '^' || map[i][j] == '<' || map[i][j] == '>' || map[i][j] == 'v') { x = i; y = j; i = 100; break; } } } for (int i = 0; i < n; i++) { char key; scanf("%c", &key); if (key == 'U') { if (x - 1 >= 0 && map[x - 1][y] == '.') { map[x][y] = '.'; x = x - 1; } map[x][y] = '^'; } else if (key == 'D') { if (x + 1 < h && map[x + 1][y] == '.') { map[x][y] = '.'; x = x + 1; } map[x][y] = 'v'; } else if (key == 'L') { if (y - 1 >= 0 && map[x][y - 1] == '.') { map[x][y] = '.'; y = y - 1; } map[x][y] = '<'; } else if (key == 'R') { if (y + 1 < w && map[x][y + 1] == '.') { map[x][y] = '.'; y = y + 1; } map[x][y] = '>'; } else if (key == 'S') { if (map[x][y] == '^') { for (int j = x - 1; j >= 0; j--) { if (map[j][y] == '#') { break; } else if (map[j][y] == '*') { map[j][y] = '.'; break; } } } else if (map[x][y] == 'v') { for (int j = x + 1; j < h; j++) { if (map[j][y] == '#') { break; } else if (map[j][y] == '*') { map[j][y] = '.'; break; } } } else if (map[x][y] == '<') { for (int j = y - 1; j >= 0; j--) { if (map[x][j] == '#') { break; } else if (map[x][j] == '*') { map[x][j] = '.'; break; } } } else if (map[x][y] == '>') { for (int j = y + 1; j < w; j++) { if (map[x][j] == '#') { break; } else if (map[x][j] == '*') { map[x][j] = '.'; break; } } } } } printf("#%d ", z); for (int i = 0; i < h; i++) printf("%s\n", map[i]); } return 0; } | cs |
'코딩,문제풀이 > SWExpertAcademy' 카테고리의 다른 글
1493. 수의 새로운 연산(D3) (0) | 2018.06.28 |
---|---|
1860. 진기의 최고급 붕어빵(D3) (0) | 2018.06.28 |
2805. 농작물 수확하기(D3) (0) | 2018.06.28 |
2814. 최장 경로(D3) (0) | 2018.06.28 |
2817. 부분 수열의 합(D3) (0) | 2018.06.28 |