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

파이썬 집합(Set)으로 문자열 내 모음 개수 세는 방법 (예제 코드 포함)

이 글에서는 파이썬(Python)을 활용해 주어진 문자열에 포함된 모음(vowel)의 개수를 집합(set)을 이용해 계산하는 방법을 알아봅니다.

문제 정의

하나의 문자열이 주어졌을 때, 집합(set)을 활용하여 해당 문자열 안에 모음이 총 몇 개 포함되어 있는지 계산하는 것이 목표입니다.

접근 방식은 매우 직관적입니다. 문자열 전체를 한 번 순회하면서 각 문자가 모음에 해당하는지 확인하고, 모음이라면 카운트 값을 1씩 증가시키면 됩니다.

구현 예제

def vowel_count(str_):
    count = 0
    # 모음 문자들을 집합(set)으로 선언
    vowels = set("aeiouAEIOU")
    for alphabet in str_:
        # 해당 문자가 모음인지 확인
        if alphabet in vowels:
            count += 1
    print("주어진 문자열의 모음 개수:", count)

# 드라이버 코드
str_ = "Tutorialspoint"
vowel_count(str_)

실행 결과

주어진 문자열의 모음 개수: 6

코드 설명

먼저 모음 문자들("aeiouAEIOU")을 set()으로 감싸 집합 형태로 선언했습니다. 파이썬의 집합은 해시 테이블 기반으로 구현되어 있어 멤버십 검사(in 연산자)의 평균 시간 복잡도가 O(1)입니다. 따라서 단순 문자열이나 리스트로 모음을 관리하는 것보다 집합을 사용하는 편이 더 효율적입니다.

이후 for 반복문으로 입력 문자열의 각 문자를 하나씩 꺼내 모음 집합에 포함되어 있는지 확인하고, 포함되어 있다면 카운트를 증가시킵니다. 위 예제에서 "Tutorialspoint"에는 u, o, i, a, o, i 등 총 6개의 모음이 포함되어 있습니다. 또한 모든 변수는 함수 내부의 지역 범위(local scope)에서 선언되므로 외부 요인 없이 독립적으로 동작합니다.

시간 복잡도

문자열의 길이를 n이라고 할 때, 문자열을 한 번만 순회하므로 전체 시간 복잡도는 O(n)입니다. 공간 복잡도 역시 고정된 크기의 모음 집합만 사용하므로 O(1)로 일정하게 유지됩니다.

결론

이 글에서는 집합(set)을 활용하여 주어진 문자열에서 모음의 개수를 세는 파이썬 프로그램을 살펴보았습니다. 집합의 빠른 멤버십 검사 특성을 활용하면 대소문자를 모두 처리하면서도 효율적으로 문제를 해결할 수 있습니다.