백준 구현 대비 주사위 굴리기

yjkim·2023년 7월 3일
0

알고리즘

목록 보기
23/60

문제:https://www.acmicpc.net/problem/14499

접근

초기 주사위의 상태의 위치를 기준으로 딕셔너리 선언, 주사위를 굴릴때마다 딕셔너리 값을 바꾸는 과정을 통해 (실제로는 한칸씩 옮겨간다고 생각하면 될듯) 해결

코드

N,M,x,y,K=map(int,input().split())

dicedict={
  4:0,
  1:0,
  3:0,
  2:0,
  5:0,
  6:0
}
graph=[]
movelist=[[0,1],[0,-1],[-1,0],[1,0]]
for i in range(N):
  graph.append(list(map(int, input().split())))
orderlist=list(map(int, input().split()))
for o in orderlist:
  nx,ny=x+movelist[o-1][0],y+movelist[o-1][1]
  if 0<=nx<N and 0<=ny<M:
    if o==1:
      dicedict[4],dicedict[1],dicedict[3],dicedict[6]=dicedict[1],dicedict[3],dicedict[6],dicedict[4]
    elif o==2:
      dicedict[4],dicedict[1],dicedict[3],dicedict[6]=dicedict[6],dicedict[4],dicedict[1],dicedict[3]
    elif o==3:
      dicedict[2],dicedict[1],dicedict[5],dicedict[6]=dicedict[6],dicedict[2],dicedict[1],dicedict[5]
    else:
      dicedict[2],dicedict[1],dicedict[5],dicedict[6]=dicedict[1],dicedict[5],dicedict[6],dicedict[2]
    if graph[nx][ny]==0:
      graph[nx][ny]=dicedict[1]
    else:
      dicedict[1]=graph[nx][ny]
      graph[nx][ny]=0
    print(dicedict[6])
    x,y=nx,ny
  else:
    continue
profile
We may throw the dice, but the Lord determines how they fall

0개의 댓글