하다보니

14891번-톱니바퀴 본문

알고리즘 풀이/백준

14891번-톱니바퀴

claire 2022. 4. 12. 18:48
#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