아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Pile Up!

면접 대비

시간 제한2초메모리 제한512 MB

요약
정해진 규칙에 따라 로봇이 번호가 붙은 큐브를 옮기는 과정을 시뮬레이션한 뒤, 마지막 각 더미의 높이를 오름차순으로 출력한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 구현, 배열, 스택
정답자
아직 제출이 없습니다

문제

크기가 같은 정육면체 여러 개와 Masato라는 단순한 로봇이 있다. 처음에는 모든 정육면체가 바닥에 있다. Masato에게 정육면체 하나를 집어 다른 정육면체 위에 놓으라고 명령해서 정육면체 더미를 만들 수 있다. 각 명령은 정육면체 *A*를 집어 정육면체 *B* 위에 놓아라 (또는 바닥에 놓아라). 형태이다.

정육면체를 집으라는 명령을 받으면, 같은 더미에서 그 정육면체와 그 위에 있는 모든 정육면체를 먼저 바닥으로 치운다. 반대로 정육면체를 다른 정육면체 위에 놓으라는 명령을 받으면, 아무것도 치우지 않고 후자를 포함하는 더미 위에 전자를 올린다.

정육면체를 다른 정육면체 위에 놓으라는 명령을 받았는데 두 정육면체가 이미 같은 더미에 있는 경우에는 두 가지 상황이 있다. 전자가 후자보다 아래에 쌓여 있으면, 그 위에 있는 모든 정육면체를 바닥으로 치운다. 그런 다음 전자를 후자 위에 놓는다. 전자가 후자보다 위에 쌓여 있으면 명령을 무시한다.

정육면체를 바닥에 놓으라는 명령을 받은 경우에도 두 가지 상황이 있다. 정육면체가 이미 바닥에 있으면(어떤 더미의 맨 아래에 쌓여 있는 경우도 포함한다), 명령을 무시한다. 그렇지 않으면 그 정육면체와 그 위에 있는 더미의 모든 정육면체를 바닥으로 치운 뒤 정육면체를 바닥으로 옮긴다.

정육면체를 자기 자신 위에 놓으라는 명령도 무시한다(불가능하다).

정육면체의 개수와 일련의 명령이 주어질 때, Masato의 행동을 시뮬레이션하고 작업이 끝났을 때 더미들의 높이를 계산하라.

입력

입력은 일련의 데이터 세트로 이루어진다. 하나의 데이터 세트는 첫 줄에 정육면체의 개수가 있고, 그 뒤에 각각 별도의 줄에 설명된 일련의 명령이 이어진다. 정육면체의 개수는 100을 넘지 않는다. 각 명령은 두 숫자로 이루어진다. 앞의 숫자는 집을 정육면체를 나타내고, 뒤의 숫자는 그 정육면체를 놓을 정육면체를 나타낸다. 명령의 끝은 두 개의 0으로 표시된다.

입력의 끝은 0 하나만 있는 줄로 표시된다.

하나의 데이터 세트는 다음과 같은 형태이다.

m
I1 J1
I2 J2
...
In Jn
0 0

각 정육면체는 번호(1부터 m까지)로 구별된다. I**k는 집을 정육면체를 나타내고 J**k는 그 정육면체를 놓을 정육면체를 나타낸다. 후자는 0일 수 있으며, 이는 정육면체를 바닥에 놓으라는 명령이다.

출력

각 더미의 높이(더미에 있는 정육면체의 개수)를 오름차순으로 한 줄에 하나씩 출력한다. 혼자 있는 정육면체 하나도 더미로 센다. 하나의 데이터 세트에 대한 출력의 끝은 end라는 문자열만 있는 줄로 표시한다.

예제1

  1. 예제 1

    입력
    3
    1 3
    2 0
    0 0
    4
    4 1
    3 1
    1 2
    0 0
    5
    2 1
    3 1
    4 1
    3 2
    1 1
    0 0
    0
    
    예상 출력
    1
    2
    end
    1
    1
    2
    end
    1
    4
    end