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

Python으로 문자열에서 모음 제거하기

문제 개요

문자열이 하나 주어졌을 때, 해당 문자열에서 모든 모음(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() 방식이 가장 효율적입니다.