728x90
SMALL
문제
https://www.acmicpc.net/problem/14499
🎲풀이
주어진 전개도에서 동,서,북,남으로 이동하면 어떻게 변할지를 구하고 move 함수로 구현하였다.
(초기에는 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져있다.)
def move(i):
global dice
if i == 1: # 동쪽 : 1,2,3,4,5 -> 4,2,1,6,5,3
sequence=[3,1,0,5,4,2]
elif i == 2: # 서쪽 : 1,2,3,4,5 -> 3,2,6,1,5,4
sequence = [2,1,5,0,4,3]
elif i == 3: # 북쪽 : 1,2,3,4,5 -> 5,1,3,4,6,2
sequence=[4,0,2,3,5,1]
else: # 남쪽: 1,2,3,4,5 -> 2,6,3,4,1,5
sequence = [1,5,2,3,0,4]
temp=[]
for s in sequence:
temp.append(dice[s])
dice=temp
import sys
N, M, x, y, K = map(int, sys.stdin.readline().split())
maps = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
dice_move = list(map(int, sys.stdin.readline().split()))
dice = [0, 0, 0, 0, 0, 0]
# 동,서,북,남 이동 정의
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
for i in dice_move: #이동 수 대로 이동(1일때 동(인덱스=0)이므로 i-1)
if 0 <= x + dx[i-1] < N and 0 <= y + dy[i-1] < M: #맵 밖으로 나가지 않을때만 출력
x = x + dx[i-1]
y = y + dy[i-1]
move(i)
if maps[x][y] == 0: #이동한 칸에 적혀있는 수가 0 이면
maps[x][y] = dice[5] #주사위의 바닥면에 쓰여있는 수가 칸에 복사
else : # 아닌경우
dice[5] = maps[x][y] #칸에 쓰여있는 수가 주사위 바닥면으로 복사
maps[x][y] = 0 #칸에 쓰여있는 수는 0이됨
print(dice[0])
728x90
LIST
'코테공부 > python 백준' 카테고리의 다른 글
파이썬 백준 22856번 : 트리 순회 (0) | 2024.06.04 |
---|---|
파이썬 백준 1707번 : 이분 그래프 (0) | 2024.05.30 |
파이썬 백준 1717번 : 집합의 표현 (0) | 2024.05.29 |
파이썬 백준 3190번 : 뱀 (0) | 2024.05.29 |
파이썬 백준 2230번 : 수 고르기 (0) | 2024.05.23 |