하다보니
14891번-톱니바퀴 본문
#include<iostream>
#include<deque>
#include<string>
using namespace std;
deque<int> dq[4];
void go(int num,int dir) {
int dirs[4] = {};
dirs[num] = dir;
int idx = num;
//왼쪽으로 전파
while (idx > 0 && dq[idx][6] != dq[idx - 1][2]) {
dirs[idx - 1] = -dirs[idx];
idx--;
}
idx = num;
//오른쪽으로 전파
while (idx < 3 && dq[idx][2] != dq[idx + 1][6]) {
dirs[idx + 1] = -dirs[idx];
idx++;
}
for (int i = 0; i < 4; i++) {
if (dirs[i] == 1) {
dq[i].push_front(dq[i].back());
dq[i].pop_back();
}
else if(dirs[i]==-1) {
dq[i].push_back(dq[i].front());
dq[i].pop_front();
}
}
}
int main() {
for (int i = 0; i < 4; i++) {
string s;
cin >> s;
for (int j = 0; j < s.size(); j++) {
dq[i].push_back(s[j]-'0');
}
}
int n;
cin >> n;
while (n--) {
int num, dir;
cin >> num >> dir;
go(num-1, dir);
}
int ans = 0;
for (int i = 0; i < 4; i++) {
if (dq[i][0] == 1) {
ans += (1 << i);
}
}
cout << ans;
}
'알고리즘 풀이 > 백준' 카테고리의 다른 글
3190번-뱀 (0) | 2022.04.15 |
---|---|
14499번-주사위 굴리기 (0) | 2022.04.14 |
14888번-연산자 끼워넣기 (0) | 2022.04.05 |
14502번-연구소 (0) | 2022.03.30 |
12100번-2048(Easy) (0) | 2022.03.30 |