문제 개요
문자열이 하나 주어졌을 때, 해당 문자열에서 모든 모음(vowel)을 제거하는 것이 목표입니다. 예를 들어 문자열이 "iloveprogramming"이라면, 모음을 제거한 결과는 다음과 같습니다.
lvprgrmmng
해결 접근 방법
이 문제는 매우 간단한 치환(replace) 방식으로 해결할 수 있습니다. 알고리즘의 단계는 다음과 같습니다.
- 모음 'a', 'e', 'i', 'o', 'u'를 담고 있는 배열(또는 리스트)을 생성합니다.
- 각 모음 v에 대해 반복하면서, 문자열 내의 v를 빈 문자열("")로 치환합니다.
Python의 str.replace() 메서드는 원본 문자열을 변경하지 않고 새로운 문자열을 반환하므로, 치환 결과를 계속 변수에 다시 할당해 주어야 합니다.
구현 예제
아래 코드를 통해 실제 구현 방법을 확인해 보겠습니다.
class Solution(object):
def removeVowels(self, s):
s = s.replace("a", "")
s = s.replace("e", "")
s = s.replace("i", "")
s = s.replace("o", "")
s = s.replace("u", "")
return s
ob1 = Solution()
print(ob1.removeVowels("iloveprogramming"))입력
"iloveprogramming"
출력
lvprgrmmng
추가 팁: 더 간결한 방법
위 방법 외에도 Python에서는 다양한 방식으로 모음을 제거할 수 있습니다.
1. 반복문과 조건문 활용
def remove_vowels(s):
vowels = "aeiou"
return "".join(ch for ch in s if ch not in vowels)2. 정규표현식(regex) 활용
import re
def remove_vowels(s):
return re.sub(r"[aeiou]", "", s)3. str.translate() 활용 (성능상 유리)
def remove_vowels(s):
return s.translate(str.maketrans("", "", "aeiou"))대소문자까지 함께 처리하려면 모음 집합에 'A', 'E', 'I', 'O', 'U'를 추가하거나, 문자열을 먼저 소문자로 변환한 뒤 처리하면 됩니다. 문자열 길이가 길다면 str.translate() 방식이 가장 효율적입니다.