๋ฌธ์
์ด 8๊ฐ์ ํฑ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํฑ๋๋ฐํด 4๊ฐ๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๋ ฌ๋ก ๋์ฌ์ ธ ์๋ค. ๋, ํฑ๋๋ N๊ทน ๋๋ S๊ทน ์ค ํ๋๋ฅผ ๋ํ๋ด๊ณ ์๋ค. ํฑ๋๋ฐํด์๋ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋๋ฐ, ๊ฐ์ฅ ์ผ์ชฝ ํฑ๋๋ฐํด๊ฐ 1๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 2๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 3๋ฒ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด๋ 4๋ฒ์ด๋ค.

์ด๋, ํฑ๋๋ฐํด๋ฅผ ์ด K๋ฒ ํ์ ์ํค๋ ค๊ณ ํ๋ค. ํฑ๋๋ฐํด์ ํ์ ์ ํ ์นธ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ํ์ ์ ์๊ณ ๋ฐฉํฅ๊ณผ ๋ฐ์๊ณ ๋ฐฉํฅ์ด ์๊ณ , ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ ํ๋ค.


ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํค๋ ค๋ฉด, ํ์ ์ํฌ ํฑ๋๋ฐํด์ ํ์ ์ํฌ ๋ฐฉํฅ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ํฑ๋๋ฐํด๊ฐ ํ์ ํ ๋, ์๋ก ๋ง๋ฟ์ ๊ทน์ ๋ฐ๋ผ์ ์์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํฌ ์๋ ์๊ณ , ํ์ ์ํค์ง ์์ ์๋ ์๋ค. ํฑ๋๋ฐํด A๋ฅผ ํ์ ํ ๋, ๊ทธ ์์ ์๋ ํฑ๋๋ฐํด B์ ์๋ก ๋ง๋ฟ์ ํฑ๋์ ๊ทน์ด ๋ค๋ฅด๋ค๋ฉด, B๋ A๊ฐ ํ์ ํ ๋ฐฉํฅ๊ณผ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.

๋ ํฑ๋๋ฐํด์ ๋ง๋ฟ์ ๋ถ๋ถ์ ์ด๋ก์ ์ ์ ์ผ๋ก ๋ฌถ์ฌ์๋ ๋ถ๋ถ์ด๋ค. ์ฌ๊ธฐ์, 3๋ฒ ํฑ๋๋ฐํด๋ฅผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๋ฉด, 4๋ฒ ํฑ๋๋ฐํด๋ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 2๋ฒ ํฑ๋๋ฐํด๋ ๋ง๋ฟ์ ๋ถ๋ถ์ด S๊ทน์ผ๋ก ์๋ก ๊ฐ๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๊ณ , 1๋ฒ ํฑ๋๋ฐํด๋ 2๋ฒ์ด ํ์ ํ์ง ์์๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๋ค. ๋ฐ๋ผ์, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ ๋ง๋ค๊ฒ ๋๋ค.

์์ ๊ฐ์ ์ํ์์ 1๋ฒ ํฑ๋๋ฐํด๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ฉด, 2๋ฒ ํฑ๋๋ฐํด๊ฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๊ณ , 2๋ฒ์ด ํ์ ํ๊ธฐ ๋๋ฌธ์, 3๋ฒ๋ ๋์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 4๋ฒ์ 3๋ฒ์ด ํ์ ํ์ง๋ง, ๋ง๋ฟ์ ๊ทน์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ ํ์ง ์๋๋ค. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.

ํฑ๋๋ฐํด์ ์ด๊ธฐ ์ํ์ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์ฃผ์ด์ก์ ๋, ์ต์ข ํฑ๋๋ฐํด์ ์ํ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 1๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋์งธ ์ค์ 2๋ฒ ํฑ๋๋ฐํด์ ์ํ, ์ ์งธ ์ค์ 3๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋ท์งธ ์ค์ 4๋ฒ ํฑ๋๋ฐํด์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. ์ํ๋ 8๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , 12์๋ฐฉํฅ๋ถํฐ ์๊ณ๋ฐฉํฅ ์์๋๋ก ์ฃผ์ด์ง๋ค. N๊ทน์ 0, S๊ทน์ 1๋ก ๋ํ๋์๋ค.
๋ค์ฏ์งธ ์ค์๋ ํ์ ํ์ K(1 ≤ K ≤ 100)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ K๊ฐ ์ค์๋ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ฒซ ๋ฒ์งธ ์ ์๋ ํ์ ์ํจ ํฑ๋๋ฐํด์ ๋ฒํธ, ๋ ๋ฒ์งธ ์ ์๋ ๋ฐฉํฅ์ด๋ค. ๋ฐฉํฅ์ด 1์ธ ๊ฒฝ์ฐ๋ ์๊ณ ๋ฐฉํฅ์ด๊ณ , -1์ธ ๊ฒฝ์ฐ๋ ๋ฐ์๊ณ ๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ด K๋ฒ ํ์ ์ํจ ์ดํ์ ๋ค ํฑ๋๋ฐํด์ ์ ์์ ํฉ์ ์ถ๋ ฅํ๋ค. ์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ๋ค.
- 1๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 1์
- 2๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 2์
- 3๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 4์
- 4๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 8์
๊ตฌํ ๋ฐฉ๋ฒ
์ ๋ ฅ: ํ๋์ ์ซ์๋ง๋ค ์ ๋ ฅ๋ฐ๋๋ก ํ๊ธฐ ์ํด์ scanf_s("%1d", &gear[i][j]);๋ฅผ ์ด์ฉ
* ์ฐธ๊ณ ๋ก ๋ฐฑ์ค์์ scanf_s ๋์ scanf๋ก ์ฝ๋๋ฅผ ์ ์ถํด์ผ ์ปดํ์ผ ์๋ฌ๊ฐ ๋์ง ์์!
1. ๊ฐ ํฑ๋๋ฐํด๊ฐ ์๊ณ๋ฐฉํฅ(1)์ผ๋ก ํ์ ํ ์ง, ๋ฐ์๊ณ๋ฐฉํฅ(-1)์ผ๋ก ํ์ ํ ์ง gear_rotation ํ๋ ฌ์ ์ ๋ ฅํ ์ ์๋๋ก ์ ์ธ
2. gear_rotation ๋ฅผ 0์ผ๋ก ์ด๊ธฐํ ํ ๋ค ๊ฐ ํ์ ๊ฒฝ์ฐ์์ ๊ธฐ์ค ํฑ๋๋ฐํด์ ์ค๋ฅธ์ชฝ ๋ฐํด๋ค์ด ์ด๋ป๊ฒ ๋์ํ ์ง, ์ผ์ชฝ ๋ฐํด๋ค์ด ์ด๋ป๊ฒ ๋์ํ ์ง Gear_Rotation_set ํจ์๋ฅผ ์คํ์์ผ gear_rotation ํ๋ ฌ์ ์ ๋ ฅ
3. ๊ตฌํ gear_rotation ํ๋ ฌ์ ํ์ ๋ฐฉํฅ์ ์๋ง๊ฒ 4๊ฐ์ ํฑ๋๋ฐํด๋ฅผ Gear_Rotation ํจ์๋ฅผ ํตํด ํ์ ์ํด
4. ์ฃผ์ด์ง ํ์ ํ์ K๋งํผ ์ 2~3์ ๊ณผ์ ์ ๋ฐ๋ณต
5. ๊ฑฐ๋ญ์ ๊ณฑ์ ์ด์ฉํ์ฌ ์ ์ ๊ณ์ฐ
๊ตฌํ ์๊ฐ
0ms
#include <iostream>
#include <cmath>
using namespace std;
int gear[4][8]; // gear[ํฑ๋๋ฐํด ๋ฒํธ][0: N๊ทน, 1: S๊ทน]
int gear_rotation[4];
void CW(int i) { // i๋ฒ์งธ ํฑ๋๋ฐํด ์๊ณ๋ฐฉํฅ ํ์
int temp = gear[i][7];
gear[i][7] = gear[i][6];
gear[i][6] = gear[i][5];
gear[i][5] = gear[i][4];
gear[i][4] = gear[i][3];
gear[i][3] = gear[i][2];
gear[i][2] = gear[i][1];
gear[i][1] = gear[i][0];
gear[i][0] = temp;
}
void CCW(int i) { // i๋ฒ์งธ ํฑ๋๋ฐํด ์๊ณ๋ฐ๋๋ฐฉํฅ ํ์
int temp = gear[i][0];
gear[i][0] = gear[i][1];
gear[i][1] = gear[i][2];
gear[i][2] = gear[i][3];
gear[i][3] = gear[i][4];
gear[i][4] = gear[i][5];
gear[i][5] = gear[i][6];
gear[i][6] = gear[i][7];
gear[i][7] = temp;
}
void gear_rotation_init() {
for (int i = 0; i < 4; i++) {
gear_rotation[i] = 0;
}
}
void Gear_Rotation_set(int gear_num, int dir) {
gear_rotation[gear_num] = dir;
int init_gear_num = gear_num;
while (gear_num >= 0 && gear_num < 3) { // ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด์ ๋น๊ต
if (gear[gear_num][2] != gear[gear_num + 1][6])
{ // ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด์ ๊ทน์ฑ์ด ๋ค๋ฅผ ์
if (gear_rotation[gear_num] == 1) {
gear_rotation[gear_num + 1] = -1;
}
else if (gear_rotation[gear_num] == -1) {
gear_rotation[gear_num + 1] = 1;
}
gear_num++;
}
else { // ๊ทน์ฑ์ด ๊ฐ์ ์ ์ค๋ฅธ์ชฝ ๋ ํ์ธํ ํ์์์ผ๋ ๋น ์ ธ๋์ด
break;
}
}
gear_num = init_gear_num;
while (gear_num > 0 && gear_num < 4) { // ์ผ์ชฝ ํฑ๋๋ฐํด์ ๋น๊ต
if (gear[gear_num][6] != gear[gear_num - 1][2])
{ // ์ผ์ชฝ ํฑ๋๋ฐํด์ ๊ทน์ฑ์ด ๋ค๋ฅผ ์
if (gear_rotation[gear_num] == 1) {
gear_rotation[gear_num - 1] = -1;
}
else if (gear_rotation[gear_num] == -1) {
gear_rotation[gear_num - 1] = 1;
}
gear_num--;
}
else { // ๊ทน์ฑ์ด ๊ฐ์ ์ ์ผ์ชฝ ๋ ํ์ธํ ํ์์์ผ๋ ๋น ์ ธ๋์ด
break;
}
}
}
void Gear_Rotation() {
for (int i = 0; i < 4; i++) {
if (gear_rotation[i] == 1) {
CW(i);
}
else if (gear_rotation[i] == -1) {
CCW(i);
}
}
}
int main()
{
int K;
int R[101][2];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 8; j++) {
scanf_s("%1d", &gear[i][j]);
}
}
cin >> K;
for (int i = 0; i < K; i++) {
for (int j = 0; j < 2; j++) {
cin >> R[i][j];
}
}
for (int k = 0; k < K; k++) {
gear_rotation_init();
Gear_Rotation_set(R[k][0] - 1, R[k][1]);
Gear_Rotation();
}
int score = 0;
for (int i = 0; i < 4; i++) {
if (gear[i][0] == 1) {
score += pow(2, i);
}
}
cout << score;
return 0;
}
'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ณต๋ถ > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 17779๋ฒ : ๊ฒ๋ฆฌ๋ฉ๋๋ง2 with C++ (0) | 2023.04.16 |
---|---|
๋ฐฑ์ค 15685๋ฒ : ๋๋๊ณค ์ปค๋ธ with C++ (0) | 2023.04.12 |
๋ฐฑ์ค 14890๋ฒ : ๊ฒฝ์ฌ๋ก with C++ (0) | 2023.04.07 |
๋ฐฑ์ค 14503๋ฒ : ๋ก๋ด์ฒญ์๊ธฐ with C++ (0) | 2023.04.06 |
๋ฐฑ์ค 14502๋ฒ : ์ฐ๊ตฌ์ with C++ (0) | 2023.04.05 |