본문 바로가기
알고리즘/백준

[백준 14499] 주사위 굴리기 (C++)

by Bloofer 2020. 5. 18.

A. 문제설명

https://www.acmicpc.net/problem/14499

문제에 대한 자세한 설명은 링크 참조

 

1. 크기가 N×M인 지도가 존재

2. 지도 위에 주사위의 위치가 주어지고, 주사위는 입력에 따라 동서남북으로 이동

3-1. 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복사

3-2. 이동한 칸에 쓰여 있는 수가 0이 아니면,  칸에 쓰여 있는 수가 주사위의 바닥면으로 복사되며, 칸에 쓰여 있는 수는 0이 됨

4. 주사위가 이동했을 때 마다 상단에 쓰여 있는 값 출력하기

 

B. 접근법

시뮬레이션

 

간단한 시뮬레이션 유형의 문제, 주어진 입력에 따라 주사위를 동서남북으로 굴리는 함수를 따로 구현하였다. 남/북으로 이동시 3/4면이 고정되고 나머지 면이 이동, 동/서로 이동시 2/5면이 고정되고 나머지 면이 이동하는 것을 충실히 구현함

 

C. 풀이

1. 다음 좌표로 이동 가능한 경우에 한 해 주사위 이동

2. 각 주사위의 이동 명령에 따라 동서남북으로 뒤집고 좌표 이동

3. 이동한 칸에 쓰여 있는 수가 0이면, 바닥면의 수가 칸에 복사

4. 0이 아니면 칸에 쓰여 있는 수가 주사위의 바닥면으로 복사, 칸에 쓰여 있는 수는 0 입력

 

D. 내 코드