목차 세기
시간 제한1초메모리 제한512 MB
목차에 나오는 제목의 레벨이 순서대로 주어질 때, 목차가 올바른지 확인하고 각 제목의 직속 하위 제목 개수를 출력하며, 올바르지 않으면 -1을 출력한다.
문제
다음과 같이 어떤 책의 목차가 있다.
- Heading 1
- SubHeading 1-1
- SubHeading 1-1-1
- SubHeading 1-1-2
- Heading 2
- SubHeading 2-1
- SubHeading 2-2
- Heading 3
목차는 여러 제목으로 이루어져 있다. 또한, 제목은 여러 개의 하위 제목을 가질 수 있다. 하위 제목 또한 자기 자신의 하위 제목을 가질 수 있다. 이러한 관계를 목차에 나타내기 위해, 제목 앞의 들여쓰기를 이용해 먼저 제목의 레벨을 구분한다. 공백이 없으면 레벨, 공백이 칸 있으면 레벨, 칸 있으면 레벨과 같은 식이다. 즉, 제목의 레벨이 이라면 공백의 수 는 이다.
목차에 나타낸 제목들은 다음과 같은 관계를 갖는다.
- 레벨이 인 제목은 레벨이 인 자기보다 위에 있는 제목 중 가장 아래에 있는 제목이 자신의 상위 제목이다. () 또한 해당 상위 제목은 이 제목을 하위 제목으로 갖는다.
- 레벨이 인 제목과 그 제목의 상위 제목 사이에는 레벨이 보다 작은 제목이 있어서는 안 된다.
- 레벨 제목은 자신의 상위 제목이 없다.
- 레벨 이상의 제목은 반드시 자신의 상위 제목이 있어야 한다.
위 예시에서 Heading1의 하위 제목은 개, SubHeading 1-1의 하위 제목은 개가 있다. 간략히 이 예시에서 각 제목의 레벨과 하위 제목의 개수를 구하면 아래와 같다.
- Heading 1 (1레벨, 1개)
- SubHeading 1-1 (2레벨, 2개)
- SubHeading 1-1-1 (3레벨, 0개)
- SubHeading 1-1-2 (3레벨, 0개)
- Heading 2 (1레벨, 2개)
- SubHeading 2-1 (2레벨, 0개)
- SubHeading 2-2 (2레벨, 0개)
- Heading 3 (1레벨, 0개)
목차가 주어졌을 때, 각 제목의 하위 제목이 몇 개인지 각각 세어 출력하시오. 편의를 위해, 입력으로는 각 목차의 레벨만이 위에서부터 순서대로 주어진다.
입력
첫째 줄에 목차가 가지고 있는 제목의 수 이 주어진다. ()
둘째 줄부터 순서대로 제목의 레벨 이 주어진다. ()
출력
주어진 목차가 올바르면 개의 줄에 걸쳐 각 제목의 하위 제목의 수를 한 줄에 하나씩 출력하시오.
주어진 목차가 올바르지 않으면 만을 출력하시오.