이 글에서는 사용자로부터 입력받은 문자열에 포함된 모음(vowel)의 개수를 세는 파이썬 프로그램을 다룹니다. 여기서는 파이썬의 집합(set) 자료형을 활용합니다. 집합은 순서가 없고, 반복 가능하며, 변경 가능하고 중복 요소를 허용하지 않는 컬렉션 자료형입니다.
예제
입력: str1 = pythonprogram
출력: 3
'pythonprogram'에는 모음 o, o, a가 각각 한 번씩 포함되어 있으므로 결과는 3이 됩니다.
알고리즘
Step 1: 문자열 내 모음의 개수를 저장할 카운터 변수를 하나 선언합니다.
Step 2: 모음들로 구성된 집합을 생성합니다.
Step 3: 주어진 문자열의 모든 문자를 하나씩 순회합니다.
Step 4: 현재 문자가 모음 집합에 존재하면 카운터 값을 1 증가시킵니다.
Step 5: 문자열 순회가 끝나면 카운터 변수를 출력합니다.
예제 코드
# 집합(Set)을 사용하여 문자열의 모음 개수를 세는 프로그램
def countvowel(str1):
c = 0
# 모음으로 이루어진 집합 생성
s = "aeiouAEIOU"
v = set(s)
# 주어진 문자열의 각 문자를 순회하는 루프
for alpha in str1:
# 해당 문자가 모음 집합에 존재하는 경우
if alpha in v:
c = c + 1
print("모음의 개수 ::>", c)
# 드라이버 코드
str1 = input("문자열을 입력하세요 ::>")
countvowel(str1)
코드 설명
위 코드에서는 대문자와 소문자 모음을 모두 포함한 문자열 "aeiouAEIOU"를 set() 함수로 집합으로 변환했습니다. 집합은 해시 기반으로 구현되어 있어 특정 요소의 포함 여부를 확인할 때 리스트보다 훨씬 빠른 성능(O(1))을 제공합니다. 따라서 문자열이 길어져도 효율적으로 모음을 판별할 수 있습니다.
실행 결과
문자열을 입력하세요 ::>pythonprogram
모음의 개수 ::> 3
마무리
이처럼 집합(Set)을 활용하면 모음 목록을 간결하게 관리하면서 빠른 멤버십 검사(in 연산)를 수행할 수 있습니다. 같은 원리를 응용하면 자음 개수 세기, 특정 문자 필터링 등 다양한 문자열 처리 문제에도 손쉽게 적용할 수 있습니다.