문서 분석 프로그램에서는 텍스트에 어떤 단어가 얼마나 자주 등장하는지 확인하는 기능을 제공한다.
영문 소문자로 구성된 단어들이 공백으로 구분되어 입력될 때, 단어별 등장 횟수를 계산하는 프로그램을 작성하시오.
다음 조건에 따라 결과를 출력한다.
- 각 단어가 등장한 횟수를 계산한다.
- 등장 횟수가 많은 단어부터 출력한다.
- 등장 횟수가 같으면 알파벳 순서가 빠른 단어부터 출력한다.
- 각 단어의 등장 횟수가 2회 이상이면
REPEATED, 1회이면SINGLE로 분류한다.
첫째 줄에 단어의 개수 (N)이 주어진다.
둘째 줄에 (N)개의 단어가 공백으로 구분되어 주어진다.
각 단어의 이름, 등장 횟수, 분류를 공백으로 구분하여 한 줄씩 출력한다.
출력 순서는 등장 횟수 내림차순이며, 등장 횟수가 같으면 알파벳 오름차순이다.
- (1 \leq N \leq 1000)
- 단어는 영문 소문자로만 구성된다.
- 단어의 길이는 1 이상 20 이하이다.
- 입력된 단어의 개수는 (N)개이다.
8
apple banana apple orange banana apple grape orange
7
python java c python java python ruby
apple 3 REPEATED
banana 2 REPEATED
orange 2 REPEATED
grape 1 SINGLE
python 3 REPEATED
java 2 REPEATED
c 1 SINGLE
ruby 1 SINGLE
입력된 단어는 다음과 같다.
apple, banana, apple, orange, banana, apple, grape, orange
단어별 등장 횟수는 다음과 같다.
apple: 3회banana: 2회orange: 2회grape: 1회
등장 횟수가 많은 순서대로 정렬한다. banana와 orange는 등장 횟수가 같으므로 알파벳 순서에 따라 banana가 먼저 출력된다.
단어별 등장 횟수는 다음과 같다.
python: 3회java: 2회c: 1회ruby: 1회
c와 ruby는 등장 횟수가 같으므로 알파벳 순서에 따라 c가 먼저 출력된다.
n = int(input())
words = input().split()
frequency = {}
for word in words:
frequency[word] = frequency.get(word, 0) + 1
sorted_words = sorted(
frequency.items(),
key=lambda x: (-x[1], x[0])
)
results = []
for word, count in sorted_words:
if count >= 2:
status = "REPEATED"
else:
status = "SINGLE"
results.append(f"{word} {count} {status}")
print("\n".join(results))