문제 출처
1. 문제설명
- 우리가 흔히 알고 있는
3x3
크기의 큐브가 있다.
- 큐브는 6가지 면이 각각 다른 색을 갖게 된다.
- 큐브를 돌리는 순서와 방향이 주어지는데, 이때마다 가장 윗면의 색상을 구하라
2. 알고리즘 설계
- 극한의 시뮬레이션 문제이다.
- 이전에 풀었던 주사위 문제와 유사한데 이 문제는 차원이 추가되었다.
- 머리로 상상하면서 푸는 게 너무 힘들어서 직접 큐브를 두고 풀었다…
- 위 또는 아래 면을 회전시킬 때는 인덱스로 값을 갱신시키면 되지만,
- 앞, 뒤, 좌, 우를 갱신시킬 때
- 변경에 필요한 값을 지닌 인덱스, 변경할 위치의 인덱스가 서로 반대라서
- 코드가 조금 지저분해진다.
- 시뮬레이션 문제라서, 로직을 차지하는 부분이 없다.
- include문 뒤에 2차원 배열을 회전시키는 로직은 자주 쓰이니 꼭 알아두자
3. 전체 코드
4. 소감
- 문제를 풀고 난 후 깨닫게 되었는데,
- 생각해보니, 시계방향 또는 반시계방향을 3번 돌리면 그 반대 방향이 된다.
- 따라서, 한번의 구현으로 1번, 3번을 실행시키면, 해당 방향과 반대 방향 구현이 가능하다.