14499-주사위굴리기

www.acmicpc.net/problem/14499

  1. 주사위를 굴리는 방향에 따라서 1,2,3,4,5,6 면이 어떻게 바뀌는지 완탐해서 조건마다 굴린 후 주사위값을 정렬한다.

n, m, x, y, k = map(int,input().split())
a = [list(map(int,input().split())) for _ in range(n)]
# 0 이 주사위 놓는 위치 / 각 칸에는 0부터 10 사이의 수
move = list(map(int,input().split()))

#우, 좌, 상, 하
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]

def roll(d):
    new_dice = [0, 0, 0, 0, 0, 0]
    if d == 1:
       new_dice[0] = dice[2]
       new_dice[1] = dice[1]
       new_dice[2] = dice[5]
       new_dice[3] = dice[0]
       new_dice[4] = dice[4]
       new_dice[5] = dice[3]
    elif d == 2:
        new_dice[0] = dice[3]
        new_dice[1] = dice[1]
        new_dice[2] = dice[0]
        new_dice[3] = dice[5]
        new_dice[4] = dice[4]
        new_dice[5] = dice[2]
    elif d == 3:
        new_dice[0] = dice[1]
        new_dice[1] = dice[5]
        new_dice[2] = dice[2]
        new_dice[3] = dice[3]
        new_dice[4] = dice[0]
        new_dice[5] = dice[4]
    elif d == 4:
        new_dice[0] = dice[4]
        new_dice[1] = dice[0]
        new_dice[2] = dice[2]
        new_dice[3] = dice[3]
        new_dice[4] = dice[5]
        new_dice[5] = dice[1]
    return new_dice

dice = [0, 0, 0, 0, 0, 0]
for i in move:
    nx = x + dx[i - 1]
    ny = y + dy[i - 1]
    if 0 <= nx < n and 0 <= ny < m:
        dice = roll(i)
        print(dice[5])
        if a[nx][ny]:
            dice[0] = a[nx][ny]
            a[nx][ny] = 0
        # 간 곳에 0이 쓰여있었다면
        else:
            a[nx][ny] = dice[0]
        x = nx
        y = ny

Last updated