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

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

문서 색인

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

요약
문서를 줄 수와 문단 규칙에 따라 쪽으로 나눈 뒤, 각 단어를 대문자로 그 단어가 나오는 쪽 번호와 함께 출력하고 세 쪽 이상 연속된 구간은 범위로 줄여 표기한다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현, 해시맵, 정렬
정답자
아직 제출이 없습니다

문제

텍스트 모드 운영체제용 텍스트 편집기를 만들고 있는데, 가장 어려운 부분은 문서 색인(index) 기능이다. 문서의 색인이란 문서에 나오는 모든 단어를 사전순으로 나열하고, 각 단어가 등장하는 쪽 번호를 함께 적은 목록이다.

문서는 여러 문단으로 이루어진다. 각 문단은 한 줄 이상으로 이루어지며, 이웃한 두 문단 사이에는 빈 줄이 정확히 하나 있다.

먼저 문서를 쪽 나누기(pagination) 한다. 한 쪽에는 최대 nn개의 줄이 들어간다. 줄을 위에서부터 차례로 한 쪽에 채워 nn개를 채운 뒤, 다음 보정 규칙을 적용한다.

  • 한 쪽의 마지막 줄이 어떤 문단의 마지막 줄이면, 그 뒤에 오는 빈 줄은 건너뛰어 어느 쪽에도 놓지 않는다. 따라서 어떤 쪽도 빈 줄로 시작하지 않는다.
  • 한 쪽의 마지막 줄이 두 줄 이상인 문단의 첫 줄(고아 줄, orphan)이면, 그 줄을 다음 쪽으로 옮긴다.
  • 한 쪽의 마지막 줄이 세 줄을 초과하는 문단의 끝에서 둘째 줄이면, 그 줄을 다음 쪽으로 옮긴다. 그렇게 하지 않으면 그 문단의 마지막 줄이 한 쪽에 홀로 남기 때문이다(미망 줄, widow).
  • 한 쪽의 마지막 줄이 정확히 두 줄 또는 세 줄인 문단의 끝에서 둘째 줄이면, 그 문단 전체를 다음 쪽으로 옮긴다. 이렇게 하면 고아 줄도 미망 줄도 생기지 않는다.

보정 규칙을 적용한 뒤 다음 쪽을 만들고, 문서 전체를 다 나눌 때까지 이 과정을 반복한다.

단어는 영어 알파벳이 연속으로 이어진 최대 구간이며, 대소문자는 구분하지 않는다. 색인은 각 단어마다 그 단어가 등장하는 쪽 번호를 오름차순으로, 쉼표로 구분하여 적는다. 한 단어가 세 쪽 이상 연속으로 등장하면 그 구간을 첫 쪽 번호와 마지막 쪽 번호를 붙임표(-)로 이어 적는다. 예: 3-5,7-10,12,13,15.

입력

첫째 줄에 정수 nn (4≤n≤1004 \le n \le 100)이 주어진다. 그다음부터는 색인을 만들 문서가 주어지며, 입력 전체의 크기는 20,000바이트를 넘지 않는다.

완전히 비어 있는 줄만 빈 줄로 본다. 어떤 줄에도 앞뒤 공백이 없고, 문서에 빈 줄이 연속으로 두 개 나오지 않으며, 문서의 첫 줄은 빈 줄이 아니고, 각 줄의 길이는 200자를 넘지 않는다.

출력

문서에 등장하는 모든 단어를 사전순으로 한 줄에 하나씩 출력한다. 각 단어 뒤에는 공백을 하나 출력하고, 이어서 그 단어가 등장하는 쪽 번호 목록을 위에서 설명한 형식으로 출력한다. 모든 단어는 대문자로 출력한다.

예제1

  1. 예제 1

    입력
    6
    From thousands of teams competing in regional 
    contests held from September to December 2004 
    world-wide, seventy-five teams will advance to 
    the World Finals in Shanghai, April 3-7, 2005.  
    
    Awards, prizes, scholarships, and bragging rights 
    will be at stake for some of the world's finest 
    university students of the computing science.
    
    Join us for the challenge, camaraderie, 
    and the fun! Become the best of the best
    of the best in ACM ICPC!
    
    ACM ICPC is the best contest!
    
    예상 출력
    ACM 3
    ADVANCE 1
    AND 2,3
    APRIL 1
    AT 2
    AWARDS 2
    BE 2
    BECOME 3
    BEST 3
    BRAGGING 2
    CAMARADERIE 3
    CHALLENGE 3
    COMPETING 1
    COMPUTING 2
    CONTEST 3
    CONTESTS 1
    DECEMBER 1
    FINALS 1
    FINEST 2
    FIVE 1
    FOR 2,3
    FROM 1
    FUN 3
    HELD 1
    ICPC 3
    IN 1,3
    IS 3
    JOIN 3
    OF 1-3
    PRIZES 2
    REGIONAL 1
    RIGHTS 2
    S 2
    SCHOLARSHIPS 2
    SCIENCE 2
    SEPTEMBER 1
    SEVENTY 1
    SHANGHAI 1
    SOME 2
    STAKE 2
    STUDENTS 2
    TEAMS 1
    THE 1-3
    THOUSANDS 1
    TO 1
    UNIVERSITY 2
    US 3
    WIDE 1
    WILL 1,2
    WORLD 1,2