문제 출처 : www.acmicpc.net/problem/14499
문제 해석 : 주사위를 굴리면서 바닥에 숫자가 있으면 복사하고, 없다면 주사위의 숫자를 바닥에 복사한다. 이렇게 명령을 진행할 때 마다 주사위 윗면의 수를 출력하는 문제이다.
문제 풀이 : 문제의 조건을 주의하면서 작성한다. 이때 주사위를 굴리는 경우에 따라서 변화하는 방향을 유의하면서 변경해주면 풀이할 수 있다.
풀이 시간 (기록용) : 45분
풀이 코드
def move_dice(d):
global dice
# 동쪽으로
if d == 0:
dice[1], dice[3], dice[4], dice[6] = dice[3], dice[6], dice[1], dice[4]
# 서쪽으로
elif d == 1:
dice[1], dice[3], dice[4], dice[6] = dice[4], dice[1], dice[6], dice[3]
# 북쪽으로
elif d == 2:
dice[1], dice[2], dice[5], dice[6] = dice[2], dice[6], dice[1], dice[5]
# 남쪽으로
else:
dice[1], dice[2], dice[5], dice[6] = dice[5], dice[1], dice[6], dice[2]
N, M, x, y, k = map(int, input().split())
dice_map = []
for _ in range(N):
dice_map.append(list(map(int, input().split())))
commands = list(map(int, input().split()))
dice = [0, 0, 0, 0, 0, 0, 0]
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
now_x, now_y = x, y
for command in commands:
direct = command - 1
nx, ny = now_x + dx[direct], now_y + dy[direct]
if 0 <= nx < N and 0 <= ny < M:
move_dice(direct)
if dice_map[nx][ny] == 0:
dice_map[nx][ny] = dice[1]
else:
dice[1] = dice_map[nx][ny]
dice_map[nx][ny] = 0
now_x, now_y = nx, ny
print(dice[6])
author : donghak park
contact : donghark03@naver.com
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 17837 새로운 게임 2 문제 풀이 (0) | 2021.03.27 |
---|---|
[알고리즘][Python] 백준 2458 키 순서 문제 풀이 (0) | 2021.03.26 |
[알고리즘][Python] 백준 1110 더하기 사이클 문제 풀이 (0) | 2021.03.16 |
[알고리즘][Python] 백준 2166 다각형의 면적 문제 풀이 (0) | 2021.03.13 |
[알고리즘][Python] 백준 2143 두 배열의 합 문제 풀이 (1) | 2021.03.13 |