티스토리 뷰
반응형
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

⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력


⊙ 알고리즘 분류
- 구현
- 시뮬레이션
⊙ 문제 접근 과정
NxM 지도에 번호가 쓰여있다.
두 가지 규칙만 기억하자
- 만약 지도에 있는 값이 0이면 주사위 바닥면의 값을 지도로 복사
- 지도에 있는 값이 0이 아니라면 지도에 있는 값을 주사위 바닥면으로 복사하고 지도는 0으로 초기화
최종적으로 주사위 윗면에 적힌 값을 return
풀이 방법
주사위를 동서남북으로 돌릴 때마다 값을 보전하는 메서드를 간단히 만들어준다.
동서남북을 차례대로 K번 탐색할 때, 해당 값이 범위 안이라면 메서드를 실행.
아니라면 무시.
그리고 위 규칙에 대해 실행.
주사위 윗면 출력
반복
⊙ 문제 풀이
import sys
input = sys.stdin.readline
N, M, x, y, K = map(int, input().split())
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
dice = [0 for _ in range(7)]
arr = [list(map(int, input().split())) for _ in range(N)]
order = list(map(int, input().split()))
def move(direction):
if direction == 1:
dice[1], dice[3], dice[4], dice[6] = dice[3], dice[6], dice[1], dice[4]
elif direction == 2:
dice[1], dice[3], dice[4], dice[6] = dice[4], dice[1], dice[6], dice[3]
elif direction == 3:
dice[1], dice[2], dice[5], dice[6] = dice[2], dice[6], dice[1], dice[5]
elif direction == 4:
dice[1], dice[2], dice[5], dice[6] = dice[5], dice[1], dice[6], dice[2]
for i in order:
nx = x+dx[i-1]
ny = y+dy[i-1]
if not 0 <= nx < N or not 0 <= ny < M:
continue
x, y = nx, ny
move(i)
if arr[x][y]:
dice[1] = arr[x][y]
arr[x][y] = 0
else:
arr[x][y] = dice[1]
print(dice[6])
⊙ 결과

⊙ 마무리
NONE
좋아요는 로그인하지 않아도 누를 수 있습니다!
728x90
반응형
'백준 온라인 저지 [BOJ] > PYTHON [파이썬]' 카테고리의 다른 글
[백준(BOJ)] 3190번 : 뱀 - PYTHON[파이썬] (0) | 2021.11.09 |
---|---|
[백준(BOJ)] 1476번 : 날짜 계산 - PYTHON[파이썬] (0) | 2021.11.07 |
[백준(BOJ)] 2583번 : 영역 구하기 - PYTHON[파이썬] (0) | 2021.10.28 |
[백준(BOJ)] 17086번 : 아기 상어 2 - PYTHON[파이썬] (0) | 2021.10.26 |
[백준(BOJ)] 10866번 : 덱 - PYTHON[파이썬] (0) | 2021.10.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- OS
- BFS
- CPP
- 운영체제
- py
- 구현
- 풀이
- 정리
- java
- 자바스크립트
- 우종정
- 문자열
- Web
- C++
- 연습문제
- 정렬
- 정답
- 파이썬
- 백준
- 쉽게배우는자바프로그래밍
- 해답
- 쉽게배우는
- Python
- 답
- 자바
- JS
- 알고리즘
- 그리디
- 쉽게 배우는 자바 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함