하나의 문자열이 주어졌을 때, 그 안에서 첫 번째로 반복되는 단어를 찾는 것이 이번 글의 목표입니다. 이 문제는 Python의 Collections 모듈을 활용하면 아주 간단하게 해결할 수 있습니다. Collections 모듈에서 제공하는 Counter() 메서드를 사용하면 각 단어가 몇 번 등장했는지 손쉽게 계산할 수 있습니다.
알고리즘
전체적인 접근 방식은 다음 세 단계로 구성됩니다.
- 1단계: 주어진 문자열을 공백을 기준으로 분할하여 단어 목록을 만듭니다.
- 2단계: 단어 목록을
Counter()를 통해 딕셔너리 형태(단어 → 빈도수)로 변환합니다. - 3단계: 단어 목록을 처음 등장한 순서대로 순회하면서, 빈도가 1보다 큰 첫 번째 단어를 찾아 출력합니다.
예제 코드
# 문자열에서 첫 번째 반복 단어를 찾는 프로그램
from collections import Counter
def repeatedword(n):
# 1단계: 주어진 문자열을 공백 기준으로 분할하여 단어 리스트 생성
w = n.split(' ')
# 2단계: 단어 리스트를 Counter 객체(딕셔너리)로 변환
con = Counter(w)
# 3단계: 빈도가 1보다 큰 첫 번째 단어를 찾아 출력
for key in w:
if con[key] > 1:
print("반복 단어는 ::>", key)
return
# 드라이버 프로그램
if __name__ == "__main__":
n = input("문자열을 입력하세요 ::")
repeatedword(n)
코드 동작 원리
n.split(' '): 입력 문자열을 공백을 기준으로 잘라 단어들의 리스트를 만듭니다.Counter(w): 각 단어를 키로, 등장 횟수를 값으로 갖는 카운터 객체를 생성합니다.for key in w:: 단어가 처음 나타난 순서를 유지하며 순회하기 때문에, 가장 먼저 두 번 이상 등장한 단어를 즉시 찾아낼 수 있습니다.
실행 결과
문자열을 입력하세요 ::We are all peaceful soul and blissful soul and loveful soul happy soul 반복 단어는 ::> soul
입력된 문장에서 soul이라는 단어가 여러 번 등장하며, 가장 먼저 반복된 단어이므로 위와 같은 결과가 출력됩니다. 이처럼 Collections.Counter를 활용하면 복잡한 로직 없이도 반복 단어 탐색 문제를 효율적으로 해결할 수 있습니다.