E D R , A S I H C RSS

Tower Of Cubes

원문보기
----
인기도:C(A,B,C), 성공률:높음(낮음,보통,높음), 레벨:3(1~4)

About TowerOfCubes

서로 무게가 다른 N개의 색 칠해진 정육면체가 주어졌다. 각 정육면체의 모든 면은 서로 다른 색으로 칠해져 있다. "무거운 정육면체를 가벼운 정육면체 위에 올려놓지 않는다"라는 첫번째 조건과 "모든 정육면체의 바닥면(맨 밑에 있는 것은 제외)의 색은 그 밑에 있는 정육면체의 윗면의 색과 같아야 한다"라는 두번째 조건 주어졌을 때, 두 조건을 만족하면서 최대한 높은 탑을 쌓아야 한다.

Input

여러 테스트 케스가 입력될 수 있다. 각 테스트 케스의 첫번째 줄에는 주어진 정육면체의 개수를 나타내는 정수 N(1≤N≤500) 입력된다. 그 밑으로 N줄에 걸쳐 각 정육면체를 설명하는 내용 입력된다. 각 정육면체를 설명하는 부분에서는 각 면의 색 입력되는데, 각각 앞, 뒤, 왼쪽, 오른쪽, 위, 아래의 색을 나타내는 색 순서대로 입력된다. 편의상 색은 1에서 100까지의 정수로 표현하자. 정육면체는 무게가 증가하는 순서대로 입력된다고 가정해도 좋다. 즉 첫번째 정육면체가 가장 가볍고 N번째 정육면체가 가장 무겁다고 가정할 수 있다.
N의 값으로 0 들어오면 입력 종료된다.

Output

우선 각 케스마다 출력 예에 나와있는 식으로 테스트 케스 번호를 출력한다. 그 다음 줄에는 가장 높은 탑의 정육면체 개수를 출력한다. 그 다음 줄부터는 탑을 루는 정육면체를, 맨 위에 있는 정육면체부터 아래로 내려가면서, 한 줄에 하나씩 출력한다. 정육면체를 출력할 때는 입력된 순서를 나타내는 번호를 출력하고 스페스를 하나 출력한 다음, 어느 방향에 있던 면 위로 올라가도록 쌓았는지를 나타내는 문자열(front, back, left, right, top, bottom, 앞, 뒤, 왼쪽, 오른쪽, 위, 아래를 나타냄)을 출력한다. 답 여러개 있을 수 있는데, 그 중 아무 답나 출력해도 된다.
서로 다른 테스트 케스 사에는 빈 줄을 출력한다.

Sample Input

{{| 3
1 2 2 2 1 2
3 3 3 3 3 3
3 2 1 1 1 1
10
1 5 10 3 6 5
2 6 7 3 6 9
5 7 3 2 1 9
1 3 3 5 8 10
6 6 2 2 4 4
1 2 3 4 5 6
10 9 8 7 6 5
6 1 2 3 4 7
1 2 3 3 2 1
3 2 1 1 2 3
0 |}}

Sample Output

{{| Case #1
2
2 front
3 front

Case #2
8
1 bottom
2 back
3 right
4 left
6 top
8 front
9 front
10 top |}}

작성자 사용언어 개발시간 코드
조현태 C++ ??? TowerOfCubes/조현태

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:15
Processing time 0.0142 sec