2
4 1 3
5
6
import sys
input = sys.stdin.readline
n, m, x, y, k = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(n)]
comm = list(map(int, input().split()))
dice = [0 for _ in range(7)]
direct = [0, (0, 1), (0, -1), (-1, 0), (1, 0)]
for i in comm:
d = direct[i]
nx, ny = x+d[0], y+d[1]
if 0 <= nx < n and 0 <= ny < m:
x, y = nx, ny
if i == 1:
dice[1], dice[4], dice[6], dice[3] = dice[4], dice[6], dice[3], dice[1]
elif i == 2:
dice[1], dice[4], dice[6], dice[3] = dice[3], dice[1], dice[4], dice[6]
elif i == 3:
dice[1], dice[5], dice[6], dice[2] = dice[5], dice[6], dice[2], dice[1]
else:
dice[1], dice[5], dice[6], dice[2] = dice[2], dice[1], dice[5], dice[6]
if arr[x][y]==0:
arr[x][y] = dice[6]
else:
dice[6] = arr[x][y]
arr[x][y] = 0
print(dice[1])
주사위를 2차원 배열로 나타내려고 했으나 좌표 이동에서 빈번히 오류를 겪어 결국 위 방법을 사용했다.
내 코드가 pythonic하다고 생각은 들지 않아 아쉬움이 많이 남는 문제..
시간이 되면 다시 풀어봐야겠다
dice = [
[0, 2, 0],
[4, 1, 3],
[0, 5, 0],
[0, 6, 0]]
이런식으로 짰었는데 주사위 좌표와 변경되는 값을 할당하는게 자꾸 헷갈려서 일단 쉬운 방법으로 풀었다. 다시 이 문제를 만나면 다시 도전해야지