7063 : 아나그램 딕셔너리
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 0
•통과: 0
•만든사람: suakii
문제 설명
아나그램(Anagram)이란 단어의 글자 나열 순서를 바꾸어 다른 단어로 만드는 놀이 또는 단어를 의미합니다. (예: eat, tea, ate)
여러 개의 영단어가 주어졌을 때 아나그램 관계에 있는 단어들을 한 그룹으로 묶는 프로그램을 작성하십시오.
결과는 다음의 정렬 조건들을 따라야 합니다.
1. 각 그룹 안에서의 단어들은 사전순으로 출력되어야 합니다.
2. 그룹 간의 출력 순서는 각 그룹의 첫 단어(가장 사전순으로 빠른 단어)를 기준으로 사전순 정렬합니다.
3. 동일 단어가 중복 입력으로 들어올 수 있으나 결과 그룹에는 고유한 단어들만 포함되어야 합니다.
[제약 조건]
• 영단어 개수 $N$: $1 \le N \le 500$
• 단어 길이: $1 \le |S| \le 20$ (소문자)
여러 개의 영단어가 주어졌을 때 아나그램 관계에 있는 단어들을 한 그룹으로 묶는 프로그램을 작성하십시오.
결과는 다음의 정렬 조건들을 따라야 합니다.
1. 각 그룹 안에서의 단어들은 사전순으로 출력되어야 합니다.
2. 그룹 간의 출력 순서는 각 그룹의 첫 단어(가장 사전순으로 빠른 단어)를 기준으로 사전순 정렬합니다.
3. 동일 단어가 중복 입력으로 들어올 수 있으나 결과 그룹에는 고유한 단어들만 포함되어야 합니다.
[제약 조건]
• 영단어 개수 $N$: $1 \le N \le 500$
• 단어 길이: $1 \le |S| \le 20$ (소문자)
입력 설명
첫째 줄에 영단어의 개수 N이 주어집니다. (1 ≤ N ≤ 500)
둘째 줄부터 N개의 줄에 걸쳐 소문자 영단어가 한 줄에 하나씩 주어집니다. 각 단어의 길이는 1 이상 20 이하입니다.
둘째 줄부터 N개의 줄에 걸쳐 소문자 영단어가 한 줄에 하나씩 주어집니다. 각 단어의 길이는 1 이상 20 이하입니다.
출력 설명
첫째 줄에 아나그램 그룹의 총 개수를 출력합니다.
둘째 줄부터 각 그룹의 단어들을 사전순 정렬하여 공백으로 구분해 한 줄씩 출력합니다. 그룹들의 순서는 각 그룹 내 첫 단어의 사전순 기준입니다.
둘째 줄부터 각 그룹의 단어들을 사전순 정렬하여 공백으로 구분해 한 줄씩 출력합니다. 그룹들의 순서는 각 그룹 내 첫 단어의 사전순 기준입니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
5
eat
tea
tan
ate
nat
출력 예시
COPY
복사되었습니다!
복사되었습니다!
2
ate eat tea
nat tan
도움
단어의 철자들을 정렬한 튜플 또는 문자열(예:
이후 각 그룹의 리스트를 정렬한 후, 각 리스트의 0번째 원소값을 키로 삼아 그룹 전체를 다시 정렬하면 됩니다.
"aet")을 키로 삼아 defaultdict(list)에 단어들을 모으십시오.이후 각 그룹의 리스트를 정렬한 후, 각 리스트의 0번째 원소값을 키로 삼아 그룹 전체를 다시 정렬하면 됩니다.