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

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

애너그램 그룹

면접 대비

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

요약
서로 애너그램인 단어들을 묶고, 크기와 가장 작은 단어 순으로 가장 큰 다섯 그룹을 출력한다.
난이도

보통10점 중 5점

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

문제

준민이는 영어 단어들을 애너그램 그룹으로 나누려고 한다.

단어 ww가 단어 vv의 애너그램이라는 것은, ww의 알파벳을 재배열하여 vv를 만들 수 있다는 뜻이다. 서로 애너그램인 단어들을 하나로 묶은 것을 애너그램 그룹이라고 한다. 그룹의 크기는 그 그룹에 속한 서로 다른 단어의 개수이다. 완전히 똑같은 단어가 여러 번 주어지면 한 번만 센다.

단어들이 주어졌을 때, 크기가 가장 큰 애너그램 그룹 다섯 개를 구하는 프로그램을 작성하시오.

입력

입력은 최대 30,000줄로 이루어지며, 각 줄에는 알파벳 소문자로만 이루어진 단어가 하나씩 주어진다. 입력은 파일의 끝(EOF)에서 끝난다.

출력

크기가 가장 큰 애너그램 그룹을 최대 다섯 개까지 출력한다. 그룹의 개수가 다섯보다 적으면 있는 그룹을 모두 출력한다.

그룹은 크기가 큰 순서대로 출력하고, 크기가 같으면 각 그룹에서 사전순으로 가장 앞서는 단어를 기준으로 사전순으로 출력한다.

각 그룹은 한 줄에 Group of size N: w1 w2 ... wk . 형식으로 출력한다. 여기서 NN은 그룹의 크기이고, 그 뒤에 그룹에 속한 단어들을 사전순으로 나열한다. 각 단어 뒤에는 공백을 하나씩 두고, 줄의 끝에는 마침표를 하나 출력한다. 완전히 같은 단어는 한 번만 출력한다.

예제3

  1. 예제 1

    입력
    undisplayed
    trace
    tea
    singleton
    eta
    eat
    displayed
    crate
    cater
    carte
    caret
    beta
    beat
    bate
    ate
    abet
    
    예상 출력
    Group of size 5: caret carte cater crate trace .
    Group of size 4: abet bate beat beta .
    Group of size 4: ate eat eta tea .
    Group of size 1: displayed .
    Group of size 1: singleton .
    
  2. 예제 2

    입력
    hello
    
    예상 출력
    Group of size 1: hello .
    
  3. 예제 3

    입력
    abc
    bca
    cab
    abc
    xyz
    
    예상 출력
    Group of size 3: abc bca cab .
    Group of size 1: xyz .