[BaekJoon] 백준 14499번 주사위 굴리기
🎈문제
https://www.acmicpc.net/problem/14499
💬설명
- 전형적인 삼성의 구현문제
- 주사위를 굴리는 걸 구현해야 해서 초반에 고민이 필요했다. 푸는건 금방 풀었다.
- dice 배열과 dice_num 딕셔너리로 주사위의 위치와 방향을 표현해줬다.
👩💻코드
# BaekJoon14499.py
N, M, x, y, k = map(int, input().split())
board = [[] for _ in range(N)]
for i in range(N):
board[i] = list(map(int, input().split()))
operations = list(map(int, input().split()))
dice = [i for i in range(6)]
dice_num = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
def move(di):
global N, M, x, y, board
rotate = [[2, 5, 3, 0], [3, 5, 2, 0], [1, 5, 4, 0], [4, 5, 1, 0]]
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
# di 동0 서1 북2 남3
nx = x + dx[di]
ny = y + dy[di]
# 보드 밖으로 나가는 경우
if nx < 0 or ny < 0 or nx >= N or ny >= M:
return -1
# 주사위 이동
first = dice[rotate[di][0]]
dice[rotate[di][0]] = dice[rotate[di][3]]
dice[rotate[di][3]] = dice[rotate[di][2]]
dice[rotate[di][2]] = dice[rotate[di][1]]
dice[rotate[di][1]] = first
# 숫자 update
if board[nx][ny] == 0:
board[nx][ny] = dice_num[dice[5]]
else:
dice_num[dice[5]] = board[nx][ny]
board[nx][ny] = 0
# x, y 업데이트
x = nx
y = ny
return dice_num[dice[0]]
def solution():
global N, M, x, y, k
for op in operations:
up = move(op - 1)
if up == -1:
continue
else:
print(up)
solution()
728x90
반응형
'CS > Algorithm 문제' 카테고리의 다른 글
[BaekJoon] 백준 14501번 퇴사 (0) | 2021.10.19 |
---|---|
[BaekJoon] 백준 14500번 테트로미노 (0) | 2021.10.19 |
[BaekJoon] 백준 17779번 게리맨더링 2 (0) | 2021.10.14 |
[Programmers] 카펫 (0) | 2021.10.14 |
[Programmers] 소수 찾기 (0) | 2021.10.14 |