-
[백준] 5373번 큐빙문제 풀이 2020. 4. 15. 22:39
5373 큐빙
문제
루빅스 큐브는 삼차원 퍼즐이다. 보통 루빅스 큐브는 3×3×3개의 작은 정육면체로 이루어져 있다. 퍼즐을 풀려면 각 면에 있는 아홉 개의 작은 정육면체의 색이 동일해야 한다.
큐브는 각 면을 양방향으로 90도 만큼 돌릴 수 있도록 만들어져 있다. 회전이 마친 이후에는, 다른 면을 돌릴 수 있다. 이렇게 큐브의 서로 다른 면을 돌리다 보면, 색을 섞을 수 있다.
이 문제에서는 루빅스 큐브가 모두 풀린 상태에서 시작한다. 윗 면은 흰색, 아랫 면은 노란색, 앞 면은 빨간색, 뒷 면은 오렌지색, 왼쪽 면은 초록색, 오른쪽 면은 파란색이다.
루빅스 큐브를 돌린 방법이 순서대로 주어진다. 이때, 모두 돌린 다음에 가장 윗 면의 색상을 구하는 프로그램을 작성하시오.
위의 그림은 루빅스 큐브를 푼 그림이다. 왼쪽 면은 시계방향으로 조금 돌려져 있는 상태이다.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스는 최대 100개이다. 각 테스트 케이스는 다음과 같이 구성되어져 있다
첫째 줄에 큐브를 돌린 횟수 n이 주어진다. (1 ≤ n ≤ 1000)
둘째 줄에는 큐브를 돌린 방법이 주어진다. 각 방법은 공백으로 구분되어져 있으며, 첫 번째 문자는 돌린 면이다. U: 윗 면, D: 아랫 면, F: 앞 면, B: 뒷 면, L: 왼쪽 면, R: 오른쪽 면이다. 두 번째 문자는 돌린 방향이다. +인 경우에는 시계 방향 (그 면을 바라봤을 때가 기준), -인 경우에는 반시계 방향이다.
출력
각 테스트 케이스에 대해서 큐브를 모두 돌린 후의 윗 면의 색상을 출력한다. 첫 번째 줄에는 뒷 면과 접하는 칸의 색을 출력하고, 두 번째, 세 번째 줄은 순서대로 출력하면 된다. 흰색은 w, 노란색은 y, 빨간색은 r, 오렌지색은 o, 초록색은 g, 파란색은 b.
풀이)
시뮬레이션 문제이다. 딱히 풀이라고 할 것도 없다.
큐브를 돌렸을때 어떤 면의 어떤 칸이 돌아가는 지 생각해 풀면 된다.
경우에 따라 일일히 다 구현했기에 코드는 올리지 않고, 어떻게 큐브가 돌아가는 생각한 것만 적어두겠다.
큐브모양을 저장하기 위해 char cube[6][9]를 선언해서 풀어줬다.
cube[i][j]가 있다면 i번째 면의 j번째 칸이라는 것이다.
i
0 1 2 3 4 5
U, D, F, B, L, R
윗면, 아랫면, 앞면, 뒷면, 왼쪽면, 오른쪽면
j
0 1 2
3 4 5
6 7 8
만약 예시로 F +/- 로 돌린다면
돌아가야 할 칸은 아래와같다
주의할 점
어떤 면을 돌리면, 그 주위 면만 구성을 바꿔줄게 하니라 해당 면의 구성을 바꿔줘야한다.
그림으로 설명하자면
그냥...정말 노가다성 문제다.
'문제 풀이' 카테고리의 다른 글
[SWEA] 1244번 최대상금 (1) 2020.04.17 [SWEA] 1859번 백만 장자 프로젝트 (0) 2020.04.17 [백준] 17143번 낚시왕 (0) 2020.04.14 [백준] 17142번 연구소 3 (0) 2020.04.12 [백준] 2217번 로프 (0) 2020.04.12