알고리즘/구현

파이썬 | 백준 | 14499 | 주사위 굴리기

cha-n 2020. 10. 28. 16:33

 

 

solution

# 14499, 주사위 굴리기
import sys

# 1:동 2:서 3:북 4:남
N, M, x, y, K = map(int, sys.stdin.readline().split())
coor = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
dir = list(map(int, sys.stdin.readline().split()))

dice = [0] * 7

for i in range(K):
    # 동
    if dir[i] == 1:
        if y + 1 < M:
            dice[4], dice[1], dice[3], dice[6] = dice[6], dice[4], dice[1], dice[3]
            if coor[x][y + 1] == 0:
                coor[x][y + 1] = dice[6]
            else:
                dice[6] = coor[x][y + 1]
                coor[x][y + 1] = 0
            y+=1
            print(dice[1])
    # 서
    elif dir[i] == 2:
        if y - 1 >= 0:
            dice[4], dice[1], dice[3], dice[6] = dice[1], dice[3], dice[6], dice[4]
            if coor[x][y - 1] == 0:
                coor[x][y - 1] = dice[6]
            else:
                dice[6] = coor[x][y - 1]
                coor[x][y - 1] = 0
            y-=1
            print(dice[1])
    # 북
    elif dir[i] == 3:
        if x - 1 >= 0:
            dice[2], dice[1], dice[5], dice[6] = dice[1], dice[5], dice[6], dice[2]
            if coor[x - 1][y] == 0:
                coor[x - 1][y] = dice[6]
            else:
                dice[6] = coor[x - 1][y]
                coor[x - 1][y] = 0
            x-=1
            print(dice[1])
    # 남
    else:
        if x + 1 < N:
            dice[2], dice[1], dice[5], dice[6] = dice[6], dice[2], dice[1], dice[5]
            if coor[x + 1][y] == 0:
                coor[x + 1][y] = dice[6]
            else:
                dice[6] = coor[x + 1][y]
                coor[x + 1][y] = 0
            x+=1
            print(dice[1])

문제 출처 www.acmicpc.net/problem/14499

 

14499번: 주사위 굴리기

첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도

www.acmicpc.net