문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

7063 : 아나그램 딕셔너리

•시간제한: 1.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

7063 : 아나그램 딕셔너리

시간 1.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

아나그램(Anagram)이란 단어의 글자 나열 순서를 바꾸어 다른 단어로 만드는 놀이 또는 단어를 의미합니다. (예: eat, tea, ate)
여러 개의 영단어가 주어졌을 때 아나그램 관계에 있는 단어들을 한 그룹으로 묶는 프로그램을 작성하십시오.
결과는 다음의 정렬 조건들을 따라야 합니다.
1. 각 그룹 안에서의 단어들은 사전순으로 출력되어야 합니다.
2. 그룹 간의 출력 순서는 각 그룹의 첫 단어(가장 사전순으로 빠른 단어)를 기준으로 사전순 정렬합니다.
3. 동일 단어가 중복 입력으로 들어올 수 있으나 결과 그룹에는 고유한 단어들만 포함되어야 합니다.

[제약 조건]
• 영단어 개수 $N$: $1 \le N \le 500$
• 단어 길이: $1 \le |S| \le 20$ (소문자)

입력 설명

첫째 줄에 영단어의 개수 N이 주어집니다. (1 ≤ N ≤ 500)
둘째 줄부터 N개의 줄에 걸쳐 소문자 영단어가 한 줄에 하나씩 주어집니다. 각 단어의 길이는 1 이상 20 이하입니다.

출력 설명

첫째 줄에 아나그램 그룹의 총 개수를 출력합니다.
둘째 줄부터 각 그룹의 단어들을 사전순 정렬하여 공백으로 구분해 한 줄씩 출력합니다. 그룹들의 순서는 각 그룹 내 첫 단어의 사전순 기준입니다.

입력 예시
COPY
복사되었습니다!

5
eat
tea
tan
ate
nat

출력 예시
COPY
복사되었습니다!

2
ate eat tea
nat tan

도움

단어의 철자들을 정렬한 튜플 또는 문자열(예: "aet")을 키로 삼아 defaultdict(list)에 단어들을 모으십시오.
이후 각 그룹의 리스트를 정렬한 후, 각 리스트의 0번째 원소값을 키로 삼아 그룹 전체를 다시 정렬하면 됩니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘