Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 문자열에서 첫 번째 반복 단어 찾기

하나의 문자열이 주어졌을 때, 그 안에서 첫 번째로 반복되는 단어를 찾는 것이 이번 글의 목표입니다. 이 문제는 Python의 Collections 모듈을 활용하면 아주 간단하게 해결할 수 있습니다. Collections 모듈에서 제공하는 Counter() 메서드를 사용하면 각 단어가 몇 번 등장했는지 손쉽게 계산할 수 있습니다.

알고리즘

전체적인 접근 방식은 다음 세 단계로 구성됩니다.

  1. 1단계: 주어진 문자열을 공백을 기준으로 분할하여 단어 목록을 만듭니다.
  2. 2단계: 단어 목록을 Counter()를 통해 딕셔너리 형태(단어 → 빈도수)로 변환합니다.
  3. 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를 활용하면 복잡한 로직 없이도 반복 단어 탐색 문제를 효율적으로 해결할 수 있습니다.