https://www.acmicpc.net/problem/1730
비트마스크를 풀려고 이 문제를 건드렸으나
비트마스크를 이용해서 푸는 방법을 몰라서 배열로 케이스를 나눠서 풀었다.
예외케이스가 좀 있어서 해결하는데 시간이 좀 걸렸다.
case문으로 하고 싶었으나 할줄모르겠다...ㅎㅎ
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 | #include <iostream> #include <cstdio> #include <string> #pragma warning(disable : 4996) using namespace std; int ary[101][101]; int main() { int N; scanf("%d", &N); string input; cin >> input; int a = 0, b = 0; // a = row , b = column // 0 means ., 1 means |, 2 means -, 3 means + for (int i = 0; i < input.length(); i++) { if (input[i] == 'D') { // input = D if (a + 1 == N) continue; else { if (ary[a][b] == 2) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 1; a += 1; if (ary[a][b] == 2) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 1; } } else if (input[i] == 'U') { if (a - 1 < 0) continue; else { if (ary[a][b] == 2) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 1; a -= 1; if (ary[a][b] == 2) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 1; } } else if (input[i] == 'R') { if (b + 1 == N) continue; else { if (ary[a][b] == 1) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 2; b += 1; if (ary[a][b] == 1) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 2; } } else if (input[i] == 'L') { if (b - 1 < 0) continue; else { if (ary[a][b] == 1) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 2; b -= 1; if (ary[a][b] == 1) ary[a][b] = 3; else if (ary[a][b] == 0) ary[a][b] = 2; } } } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { int output = ary[i][j]; // 0 means ., 1 means |, 2 means -, 3 means + if (output == 0) printf("%c", 46); else if (output == 1) printf("%c", 124); else if (output == 2) printf("%c", 45); else if (output == 3) printf("%c", 43); } cout << endl; } return 0; } | cs |
'Algorithm Problems > BOJ' 카테고리의 다른 글
[11726번] 2xn 타일링 - Dynamic Programming 동적계획법[C++] (0) | 2017.02.20 |
---|---|
[1010번] 다리 놓기 - Dynamic Programming 동적 계획법[C++] (0) | 2017.02.20 |
[11657번] Time Machine 타임머신 - Bellman-Ford Algorithm[C++]☆ (0) | 2017.01.17 |
[9935번] String Explosion 문자열 폭발 - Stack[C++] ☆ (0) | 2017.01.03 |
[1158번] Josephus Problem 조세퍼스 - Deque [C++] ☆ (0) | 2017.01.03 |