해보자

백준_14499_주사위굴리기 본문

C++/Solve & Think

백준_14499_주사위굴리기

안댕 2020. 11. 24. 22:21

#include <iostream>
using namespace std;

int N, M;
int map[20][20];

int main() {
    int dice[6] = { 0 };
    int t_dice[6] = { 0 };
    int diceMap[4][6] = { 
                            { 4, 2, 1, 6, 5, 3},
                            { 3, 2, 6, 1, 5, 4},
                            { 5, 1, 3, 4, 6, 2},
                            { 2, 6, 3, 4, 1, 5}
                        };

    pair<int, int> dir[4] = { {0,1}, {0,-1} ,{-1,0}, {1,0} };
    int x, y, K;

// 입력
    cin >> N >> M >> y >> x >> K;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) 
            cin >> map[i][j];


    for (int i = 0; i < K; i++) {
        int t;
        cin >> t; // 방향 입력.
        t--;
        y += dir[t].first; // 좌표 설정
        x += dir[t].second;
        if (!(x >= 0 && y >= 0 && y < N && x < M)) { // map 범위 내인가?
            y -= dir[t].first;
            x -= dir[t].second;
            continue;
        }

        for (int i = 0; i < 6; i++) 
            t_dice[i] = dice[i];

        for (int i = 0; i < 6; i++) 
            dice[i] = t_dice[diceMap[t][i]-1];

        // 상단 점수 출력
        cout << dice[0] << endl;
        if (map[y][x] == 0)
            map[y][x] = dice[5];
        else {
            dice[5] = map[y][x];
            map[y][x] = 0;
        }    
    }
    return 0;
}

'C++ > Solve & Think' 카테고리의 다른 글

백준_1193_분수 찾기  (0) 2020.12.13
백준_1929_소수 구하기  (0) 2020.11.25
백준_5373번_큐빙  (0) 2020.11.24
백준_17837번_새로운게임2  (0) 2020.10.10
백준_16236번_아기상어  (0) 2020.10.09