int dx[]={0,0,0,-1,1};
int dy[]={0,1,-1,0,0};
vector< vector<int> > v(N, vector<int>(M,0));
int cur_x=x, cur_y=y;
vector<int> command(K);
for(int i=0; i<K; i++) cin >> command[i];
for(int i=0; i<K; i++){
// ํ์ฌ ์ง๋์์ ์์น
int n_x=cur_x+dx[command[i]];
int n_y=cur_y+dy[command[i]];
if(n_x<0 || n_y<0 || n_x>=N || n_y>=M) continue;
๋(0,1), ์(0,-1), ๋ถ(-1,0), ๋จ(1,0)์ command์ ๋ฐ๋ผ ๊ฐ๊ฐ 1,2,3,4์ ํด๋นํ๋ฏ๋ก, dx[], dy[] ์ธ๋ฑ์ค์๋ ๋์ผํ๊ฒ ์ ์ฅํ๋ค.
๊ทธ๋ผ command[i]๋ง๋ค dx[command[i]], dy[command[i]]๋ฅผ ํ์ฌ์์ ๋ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ด๋ํ ํ์ ์ขํ๋ฅผ ๊ตฌํ ์ ์๋ค.
๋ง์ฝ ์ด๋ํ ํ์ ์ขํ๊ฐ ์ ํจํ์ง ์๋ค๋ฉด ์ถ๋ ฅํ์ง ์์ผ๋ฏ๋ก ๋ค์ command๋ฅผ ์ฒ๋ฆฌํ๋๋ก continue๋ฌธ์ ์ฌ์ฉํ๋ค.
int dice[6]={0,}; // ์, ์๋, ๋, ์ , ๋ถ, ๋จ
int temp=dice[0];
// ์ฃผ์ฌ์ ์ด๋
switch(command[i]){
case 1: // ๋์ผ๋ก ์ด๋
//cout << "command 1" << endl;
dice[0]=dice[3];//์->์๊ฐ
dice[3]=dice[1];//์->๋ฐ๋ฅ๊ฐ
dice[1]=dice[2];//๋ฐ๋ฅ->๋๊ฐ
dice[2]=temp;//๋->์๊ฐ
// ๋ถ,๋จ ๋ณํ ์์
break;
case 2: // ์๋ก ์ด๋
//cout << "command 2" << endl;
dice[0]=dice[2];//์->๋๊ฐ
dice[2]=dice[1];//๋->๋ฐ๋ฅ๊ฐ
dice[1]=dice[3];//๋ฐ๋ฅ->์๊ฐ
dice[3]=temp;//์->์๊ฐ
// ๋ถ,๋จ ๋ณํ ์์
break;
case 3: // ๋ถ์ผ๋ก ์ด๋
//cout << "command 3" << endl;
dice[0]=dice[5]; // ์->๋จ๊ฐ
dice[5]=dice[1]; // ๋จ->๋ฐ๋ฅ๊ฐ
dice[1]=dice[4]; // ๋ฐ๋ฅ->๋ถ๊ฐ
dice[4]=temp; // ๋ถ->์๊ฐ
//๋,์ ๋ณํ ์์
break;
case 4: // ๋จ์ผ๋ก ์ด๋
//cout << "command 4" << endl;
// ๋,์ ๋ณํ ์์
dice[0]=dice[4]; //์->๋ถ๊ฐ
dice[4]=dice[1];//๋ถ->๋ฐ๋ฅ๊ฐ
dice[1]=dice[5]; // ๋ฐ๋ฅ->๋จ๊ฐ
dice[5]=temp; // ๋จ->์๊ฐ
break;
}
6๋ฉด์ ์ฃผ์ฌ์๋ฅผ ํฌ๊ธฐ๊ฐ 6์ธ ๋ฐฐ์ด๋ก ํํํ๊ณ , 0๋ถํฐ 5๋ ๊ฐ๊ฐ ์, ์๋, ๋, ์, ๋ถ, ๋จ์ผ๋ก ์ง์ ํ๋ค.
์ดํ ์ขํ ๊ณ์ฐ ํ command๋ก ์ด๋ํจ์ ๋ฐ๋ผ ๋ณํ๋ ์ฃผ์ฌ์ ์์น์์์ ๊ฐ์ ๋ณต์ฌํด์ค๋ค.
// ์ด๋ํ ์นธ์ ์ฐ์ฌ ์๋ ์๊ฐ 0์ด๋ฉด
if(v[n_x][n_y]==0) v[n_x][n_y]=dice[1]; // ๋ฐ๋ฅ์ ์จ์๋ ๊ฐ ์ง๋์ ๋ณต์ฌ
else {
dice[1]=v[n_x][n_y]; // ์ฃผ์ฌ์ ๋ฐ๋ฅ์ ํ์ฌ ์ขํ์์์ ๊ฐ ์ ๊ธฐ
v[n_x][n_y]=0; // ํ์ฌ ์ขํ์ ๊ฐ์ 0์ผ๋ก
}
// ์ด๋ํ ์ขํ๋ก ํ์ฌ ์ขํ ์
๋ฐ์ดํธ
cur_x=n_x;
cur_y=n_y;
cout << dice[0] << endl; // ์ฃผ์ฌ์ ์ ๋ฉด์ ์ฐ์ฌ ์๋ ์ ์ถ๋ ฅ
๋ง์ฝ ์ขํ์ ์ฐ์ธ ๊ฐ์ด 0์ด๋ผ๋ฉด ์ฃผ์ฌ์ ๋ฐ๋ฅ ๊ฐ(dice[1])์ ์ง๋์ ๋ณต์ฌํ๋ค.
์ง๋ ์ ํ์ฌ ์ขํ์ ๊ฐ์ด ์ฐ์ฌ์์ผ๋ฉด, ์ฃผ์ฌ์ ๋ฐ๋ฅ์(dice[1])์ ๋ณต์ฌํ๋ค.
์ฃผ์ฌ์๋ง ์ ํํํ๋ค๋ฉด ๋ก์ง์ ์ด๋ ต์ง ์์ ๋ฌธ์ ์๋ค.
#include <iostream>
#include <vector>
using namespace std;
int dx[]={0,0,0,-1,1};
int dy[]={0,1,-1,0,0};
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int N,M,x,y,K;
cin >> N >> M >> x >> y >> K;
vector< vector<int> > v(N, vector<int>(M,0));
for(int i=0; i<N; i++){
for(int j=0; j<M; j++) cin >> v[i][j];
}
int cur_x=x, cur_y=y;
// ์ฃผ์ฌ์ ์ด๊ธฐํ
int dice[6]={0,}; // ์, ์๋, ๋, ์ , ๋ถ, ๋จ
vector<int> command(K);
for(int i=0; i<K; i++) cin >> command[i];
for(int i=0; i<K; i++){
// ํ์ฌ ์ง๋์์ ์์น
int n_x=cur_x+dx[command[i]];
int n_y=cur_y+dy[command[i]];
if(n_x<0 || n_y<0 || n_x>=N || n_y>=M) continue;
int temp=dice[0];
// ์ฃผ์ฌ์ ์ด๋
switch(command[i]){
case 1: // ๋์ผ๋ก ์ด๋
//cout << "command 1" << endl;
dice[0]=dice[3];//์->์๊ฐ
dice[3]=dice[1];//์->๋ฐ๋ฅ๊ฐ
dice[1]=dice[2];//๋ฐ๋ฅ->๋๊ฐ
dice[2]=temp;//๋->์๊ฐ
// ๋ถ,๋จ ๋ณํ ์์
break;
case 2: // ์๋ก ์ด๋
//cout << "command 2" << endl;
dice[0]=dice[2];//์->๋๊ฐ
dice[2]=dice[1];//๋->๋ฐ๋ฅ๊ฐ
dice[1]=dice[3];//๋ฐ๋ฅ->์๊ฐ
dice[3]=temp;//์->์๊ฐ
// ๋ถ,๋จ ๋ณํ ์์
break;
case 3: // ๋ถ์ผ๋ก ์ด๋
//cout << "command 3" << endl;
dice[0]=dice[5]; // ์->๋จ๊ฐ
dice[5]=dice[1]; // ๋จ->๋ฐ๋ฅ๊ฐ
dice[1]=dice[4]; // ๋ฐ๋ฅ->๋ถ๊ฐ
dice[4]=temp; // ๋ถ->์๊ฐ
//๋,์ ๋ณํ ์์
break;
case 4: // ๋จ์ผ๋ก ์ด๋
//cout << "command 4" << endl;
// ๋,์ ๋ณํ ์์
dice[0]=dice[4]; //์->๋ถ๊ฐ
dice[4]=dice[1];//๋ถ->๋ฐ๋ฅ๊ฐ
dice[1]=dice[5]; // ๋ฐ๋ฅ->๋จ๊ฐ
dice[5]=temp; // ๋จ->์๊ฐ
break;
}
// ์ด๋ํ ์นธ์ ์ฐ์ฌ ์๋ ์๊ฐ 0์ด๋ฉด
if(v[n_x][n_y]==0) v[n_x][n_y]=dice[1]; // ๋ฐ๋ฅ์ ์จ์๋ ๊ฐ ์ง๋์ ๋ณต์ฌ
else {
dice[1]=v[n_x][n_y]; // ์ฃผ์ฌ์ ๋ฐ๋ฅ์ ํ์ฌ ์ขํ์์์ ๊ฐ ์ ๊ธฐ
v[n_x][n_y]=0; // ํ์ฌ ์ขํ์ ๊ฐ์ 0์ผ๋ก
}
// ์ด๋ํ ์ขํ๋ก ํ์ฌ ์ขํ ์
๋ฐ์ดํธ
cur_x=n_x;
cur_y=n_y;
cout << dice[0] << endl; // ์ฃผ์ฌ์ ์ ๋ฉด์ ์ฐ์ฌ ์๋ ์ ์ถ๋ ฅ
}
return 0;
}
[codetree] ๋๋๊ณค ์ปค๋ธ (C++) (0) | 2025.04.03 |
---|---|
[๋ฐฑ์ค(BOJ)] 14940๋ฒ: ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (C++) (0) | 2025.03.11 |
[๋ฐฑ์ค(BOJ)] 1283: ๋จ์ถํค ์ง์ (C++) (0) | 2025.03.10 |
[๋ฐฑ์ค(BOJ)] 2011๋ฒ: ์ํธ ์ฝ๋(C++) (0) | 2025.01.04 |
[๋ฐฑ์ค(BOJ)] 11725: ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ(C++) (0) | 2025.01.03 |