백준 & 프로그래머스
[백준] 14499번: 주사위 굴리기 - 파이썬
hyukji
2022. 12. 12. 17:04
문제보기
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
풀이 및 설명
그리 특별할 것 없는 문제였지만 x, y를 반대로 풀어 삽질을 좀 했다.. 혹시라도 예제를 다 맞았는 데도 제출시 바로 틀리시는 분들은 이 예제를 돌려보는 것을 추천한다. x, y를 한번 더 확인하면 좋을 것 같다. x가 세로, y가 가로이다.
2 2 1 0 1
0 0
0 1
1
0
해당 문제에서 특별한 점을 뽑자면 주사위를 굴리기 구현이 있다. 동, 서, 남, 북, 위, 아래를 E, W, S, N, U, D이라고 한다면 해당 데이터를 배열에 넣고 4가지 방향에 맞춰 if문을 사용해 바꾸어주는 방식으로 구현했다.
def move(dice, order):
N, U, S, D, W ,E = dice
if order == 1:
return [N,W,S,E,D,U]
elif order == 2:
return [N,E,S,W,U,D]
elif order == 3:
return [U,S,D,N,W,E]
elif order == 4:
return [D,N,U,S,W,E]
사실 필자는 이 방식이 if문을 남용한다고 생각했다. 그래서 동쪽과 서쪽으로 굴렸을 때 사용할 [W, U, E, D]와 북쪽, 남쪽 방향에 사용할 [N, U, S, D]으로 나누어 좌우로 한칸씩 이동시키는 방식으로 구현하려고 하였다. 하지만 이렇게 해도 if문을 방향에 맞춰 사용해야 했고, 전자의 방식과 같이 if문이 4개가 필요했다. 결국 전자의 방식을 택했다.
전체코드