Muscardinus
주사위 굴리기 본문
728x90
https://www.acmicpc.net/problem/14499
#include <iostream>
using namespace std;
int n, m, sx, sy, k;
int dice[6];
int ndice[6];
int map[20][20];
int dy[] = { 0,0,-1,1 }; //동서북남
int dx[] = { 1,-1,0,0 };
void move_dice(int dir) {
switch (dir) {
case 0:
ndice[0] = dice[0];
ndice[5] = dice[1];
ndice[2] = dice[2];
ndice[4] = dice[3];
ndice[1] = dice[4];
ndice[3] = dice[5];
break;
case 1:
ndice[0] = dice[0];
ndice[4] = dice[1];
ndice[2] = dice[2];
ndice[5] = dice[3];
ndice[3] = dice[4];
ndice[1] = dice[5];
break;
case 2:
ndice[3] = dice[0];
ndice[0] = dice[1];
ndice[1] = dice[2];
ndice[2] = dice[3];
ndice[4] = dice[4];
ndice[5] = dice[5];
break;
case 3:
ndice[1] = dice[0];
ndice[2] = dice[1];
ndice[3] = dice[2];
ndice[0] = dice[3];
ndice[4] = dice[4];
ndice[5] = dice[5];
break;
default:
break;
}
for (int i = 0; i < 6; i++) {
dice[i] = ndice[i];
}
}
int main() {
ios_base::sync_with_stdio(false);
cin >> n >> m >> sy >> sx >> k;
for (int y = 0; y < n; y++) {
for (int x = 0; x < m; x++) {
cin >> map[y][x];
}
}
int dir;
for (int i = 0; i < k; i++) {
cin >> dir;
int ny = sy + dy[dir - 1];
int nx = sx + dx[dir - 1];
if (ny >= n || ny < 0 || nx >= m || nx < 0) continue; //범위 밖으로 나갈때
move_dice(dir - 1); //회전
if (map[ny][nx] == 0) {
map[ny][nx] = dice[3];
}
else if (map[ny][nx]) {
dice[3] = map[ny][nx];
map[ny][nx] = 0;
}
sy = ny; sx = nx;
cout << dice[1] << "\n";
}
return 0;
}
728x90
'알고리즘 문제 > [삼성 SW 역량 테스트 기출 문제]' 카테고리의 다른 글
연구소 (0) | 2020.08.23 |
---|---|
테트로미노 (0) | 2020.08.22 |
시험 감독 (0) | 2020.08.20 |
뱀 (0) | 2020.08.19 |
2048(Easy) (0) | 2020.08.18 |
Comments