#include <stdio.h> #include <iostream> #include <algorithm> #include <queue> #include <string> using namespace std; int N; int RotateNum; int result; deque<int> gear[5]; void Rotate(int visited[5], int num, int dir) { visited[num] = 1; // 좌측 비교 if(num-1 >= 1 && gear[num][6] != gear[num-1][2] && visited[num-1] == 0) { if(dir == 1) { Rotate(visited, num-1, -1); } else { Rotate(visited, num-1, 1); } } // 우측 비교 if(num+1 <= 4 && gear[num][2] != gear[num+1][6] && visited[num+1] == 0) { if(dir == 1) { Rotate(visited, num+1, -1); } else { Rotate(visited, num+1, 1); } } // 시계방향 if(dir == 1) { int temp = gear[num].back(); gear[num].pop_back(); gear[num].push_front(temp); } // 반시계방향 else { int temp = gear[num].front(); gear[num].pop_front(); gear[num].push_back(temp); } } int main(void) { // freopen("B14891_input.txt", "r", stdin); for(int i = 1; i <= 4; i++) { string input; cin >> input; for(int j = 0; j < input.size(); j++) { gear[i].push_back(input[j]-'0'); } } cin >> RotateNum; while(RotateNum--) { int visited[5] = {0}; int num, dir; cin >> num >> dir; Rotate(visited, num, dir); } for(int i = 1; i <= 4; i++) { if(gear[i][0] == 1) { if(i == 1) { result += 1; } else if(i == 2) { result += 2; } else if(i == 3) { result += 4; } else if(i == 4) { result += 8; } } } cout << result; return 0; } | cs |
'Baekjoon > Simulation' 카테고리의 다른 글
[백준 12100] 2048(Easy) (C/C++) (★) (0) | 2020.04.29 |
---|---|
[백준 13458] 시험감독 (Simulation) (C/C++) (0) | 2020.04.09 |
[백준 16235] 나무 재테크 (Simulation) (C/C++) (★) (0) | 2020.03.27 |
[백준 15685] 드래곤 커브 (Simulation) (C/C++) (★★) (0) | 2020.03.27 |
[백준 14890] 경사로 (Simulation) (C/C++) (★★) (0) | 2020.03.27 |