본문 바로가기

알고리즘/백준 (Pyhthon)

[알고리즘] 백준 14499 주사위 굴리기 / 파이썬

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

 

def map_move(d, x, y):
    if B[x][y] == 0:
        B[x][y] = d
        return d
    else:
        temp = B[x][y]
        B[x][y] = 0
        return temp

def sol(dice, x, y):
    for m in move:
        if m == 1:
            dy = y+1
            if dy < 0 or dy >= M:
                continue
            y = dy
            dice[1] = map_move(dice[1], x, y)
            dice[0], dice[1] = dice[1], dice[0]
            dice[1], dice[2] = dice[2], dice[1]
            dice[1], dice[5] = dice[5], dice[1]
            print(dice[5])
        elif m == 2:
            dy = y -1
            if dy < 0 or dy >= M:
                continue
            y = dy
            dice[2] = map_move(dice[2], x, y)
            dice[0], dice[2] = dice[2], dice[0]
            dice[1], dice[2] = dice[2], dice[1]
            dice[2], dice[5] = dice[5], dice[2]
            print(dice[5])
        elif m == 3:
            dx = x - 1
            if dx < 0 or dx >= N:
                continue
            x = dx
            dice[3] = map_move(dice[3], x, y)
            dice[0], dice[3] = dice[3], dice[0]
            dice[3], dice[4] = dice[4], dice[3]
            dice[3], dice[5] = dice[5], dice[3]
            print(dice[5])
        elif m == 4:
            dx = x + 1
            if dx < 0 or dx >= N:
                continue
            x = dx
            dice[4] = map_move(dice[4], x, y)
            dice[0], dice[4] = dice[4], dice[0]
            dice[3], dice[4] = dice[4], dice[3]
            dice[4], dice[5] = dice[5], dice[4]
            print(dice[5])

N, M, X, Y, K = map(int, input().split(' '))
B = [(list(map(int, input().split(' ')))) for _ in range(N)]
move = list(map(int, input().split(' ')))
sol([0, 0, 0, 0, 0, 0], X, Y)