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.0304 sec