https://www.acmicpc.net/problem/14891
๋ฌธ์
์ด 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์
ํ์ด
#include <iostream>
#include <stdio.h>
using namespace std;
void counterclockwise(int arr[]);
void clockwise(int arr[]);
void turn(int arr[], bool dir);
void cycle(int arr[][8]);
int gear[4][8], k;
int main() {
//์
๋ ฅ
for(int i=0; i<4; i++){ //ํฑ๋๋ฐํด ์
๋ ฅ๋ฐ๊ธฐ
for(int j=0; j<8; j++){
scanf("%1d", &gear[i][j]);
}
}
cin >> k;
//๊ณ์ฐ
for(int i=0; i<k; i++){
cycle(gear);
}
//์ถ๋ ฅ
int ans = 0, score = 1;
for(int i=0; i<4; i++){
if(gear[i][0] == 1){
ans += score;
}
score *= 2;
}
cout << ans;
return 0;
}
void cycle(int arr[][8]){
//๊ด๊ณ ์ค์
bool relation[3] = {true, true, true};
if(gear[0][2] == gear[1][6]){ //1๋ฒํฑ๋๋ฐํด์ 2๋ฒํฑ๋๋ฐํด
relation[0] = false;
}
if(gear[1][2] == gear[2][6]){ //2๋ฒํฑ๋๋ฐํด์ 3๋ฒํฑ๋๋ฐํด
relation[1] = false;
}
if(gear[2][2] == gear[3][6]){ //3๋ฒํฑ๋๋ฐํด์ 4๋ฒํฑ๋๋ฐํด
relation[2] = false;
}
//๋ณธ๊ฒฉ์ ์ธ ํฑ๋๋ฐํด ๋๋ฆฌ๊ธฐ ์์
int a, b; bool dir;
cin >> a >> b; //a: ํฑ๋๋ฐํด๋ฒํธ, b: ๋ฐฉํฅ
if(b == 1){
dir = true; //์๊ณ
}
else{
dir = false; //๋ฐ์๊ณ
}
//1๋ฒ ํฑ๋๋ฐํด ๋๋ฆด๋
if(a==1){
turn(gear[0], dir);
if(relation[0] == true){
turn(gear[1], !(dir));
if(relation[1] == true){
turn(gear[2], dir);
if(relation[2] == true){
turn(gear[3], !(dir));
}
}
}
}
//2๋ฒ ํฑ๋๋ฐํด ๋๋ฆด๋
else if(a==2){
turn(gear[1],dir);
if(relation[0]==1){
turn(gear[0], !(dir));
}
if(relation[1] == true){
turn(gear[2], !(dir));
if(relation[2] == true){
turn(gear[3], dir);
}
}
}
//3๋ฒ ํฑ๋๋ฐํด ๋๋ฆด๋
else if(a==3){
turn(gear[2], dir);
if(relation[2] == true){
turn(gear[3], !(dir));
}
if(relation[1] == true){
turn(gear[1], !(dir));
if(relation[0] == true){
turn(gear[0], dir);
}
}
}
//4๋ฒ ํฑ๋๋ฐํด ๋๋ฆด๋
if(a==4){
turn(gear[3], dir);
if(relation[2] == true){
turn(gear[2], !(dir));
if(relation[1] == true){
turn(gear[1], dir);
if(relation[0] == true){
turn(gear[0], !(dir));
}
}
}
}
}
void turn(int arr[], bool dir){
if(dir == 1){
clockwise(arr);
}
else if(dir == 0){
counterclockwise(arr);
}
}
void counterclockwise(int arr[]){
int tmp = arr[0];
for(int i=0; i<7; i++){
arr[i] = arr[i+1];
}
arr[7] = tmp;
}
void clockwise(int arr[]){
int tmp = arr[7];
for(int i=7; i>0; i--){
arr[i] = arr[i-1];
}
arr[0] = tmp;
}
์ฝ๋๊ธธ์ด ใ ใ ใ ใ ใ ใ ใ
ํ๋ ํธ๋๋ฐ 2์๊ฐ 40๋ถใ ใ ใ ใ ใ ใ ใ ใ
์ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ
์์๊ฒจ.
TIL
- ์๋ฅผ ๋ฌธ์์ด ์ฒ๋ผ ์ซ์ ํ๋์ฉ ๋ฐฐ์ด์ ์ ์ฅํ๊ธฐ
for(int i=0; i<4; i++){ //ํฑ๋๋ฐํด ์
๋ ฅ๋ฐ๊ธฐ
for(int j=0; j<8; j++){
scanf("%1d", &gear[i][j]);
}
}
์ด๊ฑธ.. ๊ทธ๋์ ๋ชฐ๋ผ์.. int๋ก ๋ฐ์์... ์๋ฆฟ์ ํ๋ํ๋ ๋ถ๋ฆฌํ๊ณ .. ใ ใ ใ ใ ใ ใ
+) ์ค๋ ฅ์ด ์์ผ๋ฉด ๋ฌธ์ ํ๋๋ฅผ ํธ๋๋ฐ 2์๊ฐ 40๋ถ์ด ๊ฑธ๋ฆด ์ ์๋ค.
'๐ฆ Chango > ๐ฃ EDOC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ตฌ๋ฆ][C++] 14ํ E-PPER 7๋ฒ : ์ ๋ฌธ๊ธฐ์ฌ (0) | 2021.09.27 |
---|---|
[๊ตฌ๋ฆ][C++] 10ํ E-PPER 2๋ฒ : OX ํด์ฆ (0) | 2021.09.15 |
[BOJ][C++] ๋ฐฑ์ค 1074๋ฒ: Z (0) | 2021.09.07 |
[BOJ][C++] ๋ฐฑ์ค 13305๋ฒ: ์ฃผ์ ์ (0) | 2021.09.06 |
[BOJ][C++] 13458๋ฒ: ์ํ ๊ฐ๋ (0) | 2021.09.06 |