Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 파이썬
- 백준12904
- 부스트캠프
- 단어 수학
- 키패드 누르기
- A와 B
- 프로그래머스
- 백준1788
- 인구 이동
- 백준5710
- 피보나치 수의 확장
- 백준 2564
- 소수 만들기
- 백준16234
- 전기 요금
- 백준3190
- 백준
- 경비원
- 코딩테스트
- 완주하지 못한 선수
- 백준2573
- 124 나라의 숫자
- 백준 14499
- 로또의 최고 순위와 최저 순위
- 백준16954
- 빙산
- 백준1339
- 백준1697
- 움직이는 미로 탈출
- Smart Commit
Archives
- Today
- Total
Today.dev
[BOJ_14499/Python] 주사위 굴리기 본문
문제
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
풀이
import sys
input = sys.stdin.readline
def roll_the_dice(m):
if m == 1: # 동
return [dice[0], dice[2], dice[3], dice[5], dice[4], dice[1]]
if m == 2: # 서
return [dice[0], dice[5], dice[1], dice[2], dice[4], dice[3]]
if m == 3: # 남
return [dice[2], dice[1], dice[4], dice[3], dice[5], dice[0]]
if m == 4: # 북
return [dice[5], dice[1], dice[0], dice[3], dice[2], dice[4]]
# 입력
N, M, x, y, K = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
move = list(map(int, input().split()))
# 풀이
dice = [0, 0, 0, 0, 0, 0]
dir = [(0, 0), (0, 1), (0, -1), (-1, 0), (1, 0)]
btm_idx, top_idx = 2, 5
for m in move:
dx, dy = dir[m]
if 0 <= x + dx <= N - 1 and 0 <= y + dy <= M - 1:
x = x + dx
y = y + dy
dice = roll_the_dice(m)
if arr[x][y] != 0: # 1. 칸에 쓰인 수 주사위 바닥면으로 복사, 칸에 쓰인 수 = 0
dice[btm_idx] = arr[x][y]
arr[x][y] = 0
else: # 2. 주사위 바닥면의 수 칸에 복사
arr[x][y] = dice[btm_idx]
# 출력
print(dice[top_idx])
roll_the_dice() 함수를 만들어서 주사위를 굴리는 동작을 처리하게 했다. 문제에서 제시한 도면을 기준으로 다음과 같이 인덱스를 잡았다.
주사위를 동서남북으로 굴리더라도 2번 인덱스는 무조건 바닥면에 쓰인 값을, 5번 인덱스는 무조건 윗 면에 쓰인 값을 나타내도록 고정해놨기 때문에 어디가 바닥면이고 어디가 윗 면인지 고민할 필요가 없어서 좋다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ_5710/Python] 전기 요금 (0) | 2021.07.05 |
---|---|
[BOJ_1697/Python] 숨바꼭질 (0) | 2021.07.05 |
[BOJ_1339/Python] 단어 수학 (0) | 2021.05.31 |
[BOJ_16234/Python] 인구 이동 (0) | 2021.05.31 |
[BOJ_1788/Python] 피보나치 수의 확장 (0) | 2021.05.31 |
Comments