본문 바로가기
Problem Solving/BOJ

[Python] 14499. 주사위 굴리기

by 부르르 2021. 4. 7.

https://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


시뮬레이션 문제이다.

키 포인트는

  • 주사위 전개도를 배열로 치환하기
  • 문자열 slicing으로 동서남북 이동 결과 리턴

주의할 점은 최초 입력값 받을 때 x,y가 아닌 y,x로 입력을 받아야 한다.  

def east(dice):
    return list(str(dice[0])+str(dice[5])+str(dice[2])+str(dice[4])+str(dice[1])+str(dice[3]))

def west(dice):
    return list(str(dice[0])+str(dice[4])+str(dice[2])+str(dice[5])+str(dice[3])+str(dice[1]))

def north(dice):
    return list(''.join(dice[3])+''.join(dice[:3])+''.join(dice[4:]))

def south(dice):
    return list(''.join(dice[1:4])+''.join(dice[0])+''.join(dice[4:]))

def main():
    N, M, y, x, K = map(int, input().split())
    MAP = [input().split() for _ in range(N)]
    cmd = input().split()
    di = ((0,1),(0,-1),(-1,0),(1,0))
    dice = ['0']*6
    dice[1] = MAP[y][x]

    for c in cmd:
        next_y = y + di[int(c)-1][0]
        next_x = x + di[int(c)-1][1]
        if 0<=next_y<N and 0<=next_x<M:
            if c == "1":
                dice = east(dice)
            elif c == "2":
                dice = west(dice)
            elif c == "3":
                dice = north(dice)
            else:
                dice = south(dice)
            if MAP[next_y][next_x] == "0":
                MAP[next_y][next_x] = dice[1]
            else:
                dice[1] = MAP[next_y][next_x]
                MAP[next_y][next_x] = "0"
            print(dice[3])
            y = next_y
            x = next_x
        else:
            continue

main()

 

문제를 푸는데 도움이 된 테스트 케이스

# Input
4 2 1 0 8
0 2
3 4
5 6
7 8
4 4 4 1 3 3 3 2

# Output
0
3
0
0
8
6
3

 

728x90
반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[Python] 14503. 로봇 청소기  (0) 2021.04.14
[Python] 15686. 치킨 배달  (0) 2021.04.08
[Python] 13458. 시험 감독  (0) 2021.04.04
[Python] 3190. 뱀  (0) 2021.04.03
[Python]3678. 카탄의 개척자  (0) 2019.05.11

댓글