삼성 역테 문제 테트로미노(?) 랑 유사한 부분이 있다.
삼성역테는 많은 경우의 수를 직접 해야하지만, 그것을 좌표화 시켜서 빠르게 처리하는 능력을 보는 문제들 있는거 같다.
주사위 굴리기 문제도 처음에 접근했을떄 그 상황마다 모두 고려하며 코드를 짜려고 했다.
하지만 그렇게 되면, 코드가 더러울 뿐만 아니라, 하다가 너무 많아서 포기하게 된다.
하지만 밑 처럼 다음 이동을 좌표화 시켜서 푼다면 편하다.
다른 문제들에서도 상황상 복잡해 보인다면 좌표화 시키는 것을 활용해보자!
from collections import deque
n,m, x,y,num = map(int,input().split())
map1 = []
for _ in range(n):
a = list(map(int,input().split()))
map1.append(a)
gogo = list(map(int,input().split()))
go = deque(gogo)
dice = [0 for i in range(6)]
direction = [0,[4,2,1,6,5,3],[3,2,6,1,5,4],[2,6,3,4,1,5],[5,1,3,4,6,2]]
dx = [0,0,0,-1,1]
dy = [0,1,-1,0,0]
while go:
d = go.popleft()
dm = direction[d]
#방향이동
if 0<=x+dx[d]<n and 0<= y+dy[d] <m: #map넘어가면 통과
x =x + dx[d]
y =y + dy[d]
else:
continue
#주사위 위치 변환
dice[0],dice[1],dice[2],dice[3],dice[4],dice[5] = dice[dm[0]-1],dice[dm[1]-1],dice[dm[2]-1],dice[dm[3]-1],dice[dm[4]-1],dice[dm[5]-1]
if map1[x][y] == 0:
map1[x][y] = dice[0]
else:
dice[0] = map1[x][y]
map1[x][y] =0
print(dice[5])
'Data Science > 삼성 SW역량테스트 기출 (백준 문제집)' 카테고리의 다른 글
[SW테스트 기출][파이썬] 13458 시험감독 (0) | 2020.05.02 |
---|---|
[백준][파이썬] 3190 :뱀 (0) | 2020.04.28 |
댓글