- ์ด ๋ฌธ์ ๋ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
#include <iostream>
#include <queue>
#include <utility>
#include <cmath>
#include <string>
using namespace std;
int main(){
int sum=0;
int arr[4][8]; // ํฑ๋๋ฐํด ๋ฐฐ์ด
for(int i=0;i<4;i++){
string str;
cin>>str;
for(int j=0;j<8;j++){
arr[i][j]=str[j]-'0';
}
}
int k;
cin>>k;
for(int i=0;i<k;i++){
int s,d;
cin>>s>>d;
int check[4]={0};
queue<pair<int,int>> q;
// ํฑ๋๋ฐํด ๋ฒํธ๋ 0๋ถํฐ ์์
q.push(make_pair(s-1,d));
check[s-1]=d;
while(!q.empty()){
int idx=q.front().first;
int dir=q.front().second;
q.pop();
// 0์ด๋ฉด ์ค๋ฅธ์ชฝ๋ง ํ์ธ
if(idx==0){
if(arr[idx][2]!=arr[idx+1][6] && check[idx+1]==0){ // ๋ง๋ฌผ๋ฆฐ ํฑ๋๊ฐ ๋ค๋ฅด๊ณ , ๋ฐฉ๋ฌธ ํฑ๋๊ฐ ์๋๊ฒฝ์ฐ
q.push(make_pair(idx+1,-1*dir));
check[idx+1]=-1*dir;
}
}
// 3์ด๋ฉด ์ผ์ชฝ๋ง ํ์ธ
else if(idx==3){
if(arr[idx][6]!=arr[idx-1][2] && check[idx-1]==0){ // ๋ง๋ฌผ๋ฆฐ ํฑ๋๊ฐ ๋ค๋ฅด๊ณ , ๋ฐฉ๋ฌธ ํฑ๋๊ฐ ์๋๊ฒฝ์ฐ
q.push(make_pair(idx-1,-1*dir));
check[idx-1]=-1*dir;
}
}
// ๊ทธ ์ธ ์์ชฝ ํ์ธ
else{
if(arr[idx][2]!=arr[idx+1][6] && check[idx+1]==0){ // ๋ง๋ฌผ๋ฆฐ ํฑ๋๊ฐ ๋ค๋ฅด๊ณ , ๋ฐฉ๋ฌธ ํฑ๋๊ฐ ์๋๊ฒฝ์ฐ
q.push(make_pair(idx+1,-1*dir));
check[idx+1]=-1*dir;
}
if(arr[idx][6]!=arr[idx-1][2] && check[idx-1]==0){ // ๋ง๋ฌผ๋ฆฐ ํฑ๋๊ฐ ๋ค๋ฅด๊ณ , ๋ฐฉ๋ฌธ ํฑ๋๊ฐ ์๋๊ฒฝ์ฐ
q.push(make_pair(idx-1,-1*dir));
check[idx-1]=-1*dir;
}
}
}
// ํฑ๋ ์ ๋ ฌ
for(int j=0;j<4;j++){
if(check[j]==1){
int temp=arr[j][7];
for(int k=7;k>=1;k--){
arr[j][k]=arr[j][k-1];
}
arr[j][0]=temp;
}
else if(check[j]==-1){
int temp=arr[j][0];
for(int k=0;k<7;k++){
arr[j][k]=arr[j][k+1];
}
arr[j][7]=temp;
}
}
}
for(int i=0;i<4;i++){
if(arr[i][0]==1){
sum+=pow(2,i);
}
}
cout<<sum;
}
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.