공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/코딩테스트 문제풀이

[Python] 백준 14499. 주사위 굴리기

inspirit941 2019. 11. 21. 18:31
반응형

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개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마

www.acmicpc.net

삼성SW역량평가 시뮬레이션 문제.

 

코드가 어렵다기보다는 문제를 이해하는 게 고통스러웠다.

 

문제를 풀기 위해서는

 

1. 주사위라는 객체를 만들고, 여섯 면을 정의한다.

2. 주사위의 이동 = 주사위 각 면 값을 바꾸어준다

 

두 가지가 떠올라야 했다.

 

주사위가 이동할 경우 각 면에 해당하는 값이 바뀌는 건 python에서는 a, b = b, a 형태로 쉽게 해결할 수 있다.

 

주사위 이동을 표현한 python 식을 이해하는 법

ex) 주사위를 동쪽으로 이동시킨다

= 이전 주사위의 동쪽 면 -> 아랫면

= 이전 주사위의 윗면 -> 동쪽 면

= 이전 주사위의 아랫면 -> 서쪽 면

= 이전 주사위의 서쪽 면 -> 윗면

이렇게 되는데, Python 등식 기준으로 오른쪽 값 -> 해당 위치의 왼쪽 값으로 변화한다고 이해하면 된다.

 

dice.e, dice.b, dice.w, dice.t = dice.t, dice.e, dice.b, dice.w 라고 하면

dice.t 값이 dice.e로 (윗면 -> 동쪽 면), dice.e값이 dice.b로(동쪽 면 -> 아랫면) 바뀌는 것이다.

 

 

반응형