- 초기 상태의 dice가 [0, 1, 2, 3, 4, 5]라고 할 때,
- cmd == 1 (동쪽 이동)
[3, 1, 0, 5, 4, 2]
- cmd == 2 (서쪽 이동)
[2, 1, 5, 0, 4, 3]
- cmd == 3 (북쪽 이동)
[4, 0, 2, 3, 5, 1]
- cmd == 4 (남쪽 이동)
[1, 5, 2, 3, 0, 4]
tmp = list(map(int, input().split(' ')))
N = tmp[0]; M = tmp[1]; x = tmp[2]; y = tmp[3]; K = tmp[4]
graph = []
for _ in range(N):
graph.append(list(map(int, input().split(' '))))
cmd = []
cmd = list(map(int, input().split(' ')))
dice = [0, 0, 0, 0, 0, 0]
def turn(direction):
d_0 = dice[0]; d_1 = dice[1]; d_2 = dice[2]; d_3 = dice[3]; d_4 = dice[4]; d_5 = dice[5]
if direction == 1:
dice[0] = d_3; dice[1] = d_1; dice[2] = d_0; dice[3] = d_5; dice[4] = d_4; dice[5] = d_2
elif direction == 2:
dice[0] = d_2; dice[1] = d_1; dice[2] = d_5; dice[3] = d_0; dice[4] = d_4; dice[5] = d_3
elif direction == 3:
dice[0] = d_4; dice[1] = d_0; dice[2] = d_2; dice[3] = d_3; dice[4] = d_5; dice[5] = d_1
else:
dice[0] = d_1; dice[1] = d_5; dice[2] = d_2; dice[3] = d_3; dice[4] = d_0; dice[5] = d_4
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
for i in range(len(cmd)):
x += dx[cmd[i] - 1]
y += dy[cmd[i] - 1]
if x < 0 or x >= N or y < 0 or y >= M:
x -= dx[cmd[i] - 1]
y -= dy[cmd[i] - 1]
continue
turn(cmd[i])
if graph[x][y] == 0:
graph[x][y] = dice[5]
else:
dice[5] = graph[x][y]
graph[x][y] = 0
print(dice[0])
- dx = [0, 0, -1, 1], dy = [1, -1, 0, 0]
- 주사위가 동서남북으로 이동할 때, 전개도 상에서 index가 어떻게 매핑되는 지만 알면 쉽게 풀 수 있음