14499-주사위굴리기
주사위를 굴리는 방향에 따라서 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