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