해당 문제는 주사위 도면을 고정 시키고, 상,하,좌,우 이동시, 각 숫자가 어느 위치로 옮겨 지는지 하나하나 따져서 무식하게 풀었다.
//original
2
4 1 3
5
6
//up
6
4 2 3
1
5
//down
1
4 5 3
6
2
//left
2
6 3 1
5
3
//right
2
1 3 6
5
4
포인트는 각 도면의 인덱스는 1,2,3,4,5,6 으로 그대로 고정되기에, 1번, 6번 인덱스 내의 값이 각각 바닥, 천장 값으로 고정되고, 각 움직임에 따라 실제 숫자 값만 바꿔주는 것이다.
정답 코드
#include<iostream>
using namespace std;
// 2
//413
// 5
// 6
int arr[100][100];
int dice[7]; //1: 바닥, 6: 천장
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,-1,1 };
int h[4] = { 2,1,5,6 };
int w[3] = { 4,1,3 };
int top = 6;
void up() {
int tmp = dice[h[3]];
for(int i=2;i>=0;i--){ // 6 ==5. 5==1. 1==2. 2==6
dice[h[i+1]] = dice[h[i]];
}
dice[h[0]] = tmp;
}
void down() {
int tmp = dice[h[0]];
for (int i = 0; i < 3; i++) { //
dice[h[i]] = dice[h[i+1]];
}
dice[h[3]] = tmp;
}
void left() {
int tmp = dice[w[2]];
for (int i = 1; i >= 0; i--) { //
dice[w[i + 1]] = dice[w[i]];
}
dice[w[0]] = tmp;
//4,6 swap
tmp = dice[4];
dice[4] = dice[6];
dice[6] = tmp;
}
void right() {
int tmp = dice[w[0]]; //tmp==4
for (int i = 0; i < 2; i++) { // 4,1,3
dice[w[i]] = dice[w[i + 1]]; //4==1. 1==3
}
dice[w[2]] = tmp; //3==4
//3,6 swap
tmp = dice[3];
dice[3] = dice[6];
dice[6] = tmp;
}
int main() {
int n, m, x, y, k;
cin >> n >> m >> y >> x >> k;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> arr[i][j];
}
}
int nxt_x = x, nxt_y = y;
while (k--) {
int cmd;
cin >> cmd;
if (0 > nxt_x+ dx[cmd - 1] || nxt_x+ dx[cmd - 1] >= m || 0 > nxt_y+ dy[cmd - 1] || nxt_y+ dy[cmd - 1] >= n) continue; //맵밖 무시.
nxt_x += dx[cmd - 1], nxt_y += dy[cmd - 1];
//바닥: 1, 천장: 6
if (cmd == 1) {
right();
}
if (cmd == 2) {
left();
}
if (cmd == 3) {
up();
}
if (cmd == 4) {
down();
}
//이동 후 계산
if (arr[nxt_y][nxt_x] == 0) {
arr[nxt_y][nxt_x] = dice[1];
}
else {
dice[1] = arr[nxt_y][nxt_x];
arr[nxt_y][nxt_x] = 0;
}
cout << dice[6] << endl;
}
}
'코딩테스트' 카테고리의 다른 글
[PCCP 모의고사] 2번 체육대회 (조합) (0) | 2023.08.02 |
---|---|
[프로그래머스 고득점 kit] 피로도 c++ 풀이 (완전 탐색) (0) | 2023.08.01 |
순열, 조합 c++ [재귀를 이용한 풀이] (0) | 2023.07.27 |
[삼성 sw 역량 테스트 A형 샘플 문제] 프로세서 연결하기 c++ (0) | 2023.07.26 |
시각(년, 월, 일,...) 문제 완전 공략 (c++) (0) | 2023.07.25 |