๋ฐ์ํ
[๐ฃ EDOC/EPPER ๊ธฐ์ถ (0908-0915)] - [BOJ G5][C++] ๋ฐฑ์ค 14891๋ฒ: ํฑ๋๋ฐํด
๋๋ ์งํํ๋ค.
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <deque>
#include <vector>
#include <cmath>
using namespace std;
// ๋ง๋ฟ๋ ํฑ๋์ ์ธ๋ฑ์ค
const int R = 2;
const int L = 6;
deque<int> wheel[5]; // ํฑ๋๋ฐํด ์ํ
vector<int> rotation(5, 0); // ์๊ณ๋ฐฉํฅ(1), ๋ฐ์๊ณ๋ฐฉํฅ(-1), ํ์ ์์(0)
void decideRotation(int num, int rot) {
if(rotation[num] != 0)
return; // ์ด๋ฏธ ํ์ ๋ฐฉํฅ ๊ฒฐ์ ์ด๋ผ๋ฉด ๋ฆฌํด
rotation[num] = rot;
// ์ค๋ฅธ์ชฝ ๋ฐํด ๋ฐฉํฅ ๊ฒฐ์
if(num<4 && wheel[num][R] != wheel[num+1][L]) {
decideRotation(num+1, -rot);
}
// ์ผ์ชฝ ๋ฐํด ๋ฐฉํฅ ๊ฒฐ์
if(num>1 && wheel[num][L] != wheel[num-1][R]) {
decideRotation(num-1, -rot);
}
}
void rotate() {
for(int i=1; i<=4; i++) {
if(rotation[i] == 1) {
// ์๊ณ๋ฐฉํฅ ํ์
int tmp = wheel[i].back();
wheel[i].pop_back();
wheel[i].push_front(tmp);
} else if (rotation[i] == -1) {
// ๋ฐ์๊ณ ๋ฐฉํฅ ํ์
int tmp = wheel[i].front();
wheel[i].pop_front();
wheel[i].push_back(tmp);
}
}
return;
}
int calcScore() {
int answer = 0;
for(int i=1; i<=4; i++) {
answer += pow(2, i-1) * wheel[i][0];
}
return answer;
}
int main() {
string temp;
for(int i=1; i<=4; i++) {
cin >> temp;
for(int j=0; j<8; j++) {
wheel[i].push_back(temp[j] - '0');
}
}
int n, num, rot;
cin >> n;
while(n--) {
cin >> num >> rot;
rotation.assign(5, 0);
// ํ์ ๋ฐฉํฅ ๊ฒฐ์
decideRotation(num, rot);
// ํ์ ํ๊ธฐ
rotate();
}
cout << calcScore();
return 0;
}
/*
*/
๋ฐ์ํ
'๐ฒ Altu-Bitu > ๊ตฌํ&์๋ฎฌ๋ ์ด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ S4][C++] ๋ฐฑ์ค 1244๋ฒ: ์ค์์น ์ผ๊ณ ๋๊ธฐ (0) | 2022.10.17 |
---|---|
[BOJ S3][C++] ๋ฐฑ์ค 2503๋ฒ: ์ซ์ ์ผ๊ตฌ (2%, 4%) (0) | 2022.10.06 |
[BOJ G5][C++] ๋ฐฑ์ค 20055๋ฒ: ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด (0) | 2022.10.03 |
[BOJ S1][C++] ๋ฐฑ์ค 20923๋ฒ: ์ซ์ ํ ๋ฆฌ๊ฐ๋ฆฌ ๊ฒ์ (0) | 2022.09.30 |
[BOJ S3][C++] ๋ฐฑ์ค 1213๋ฒ: ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2022.09.19 |