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

파이썬(Python)으로 주어진 문자열이 모음 팰린드롬인지 확인하는 프로그램

이 글에서는 다음과 같은 문제를 파이썬(Python)으로 해결하는 방법을 알아봅니다.

문제 정의

문제: 모음과 자음이 섞여 있는 문자열이 주어집니다. 문자열에서 모든 자음을 제거한 후, 남은 모음 문자열이 팰린드롬(회문)인지 아닌지를 판별하는 프로그램을 작성해야 합니다.

접근 방법

해결 절차는 다음과 같습니다.

  1. 주어진 문자열에서 자음을 모두 제거하여 모음만으로 이루어진 새로운 문자열을 만듭니다.
  2. 문자열에 모음이 하나도 없다면(즉, 자음만 존재하는 경우) -1을 출력합니다.
  3. 모음 문자열이 자기 자신을 뒤집은 문자열과 동일한지 비교하여 팰린드롬 여부를 확인합니다.
  4. 팰린드롬이면 YES, 아니면 NO를 출력합니다.

파이썬에서는 슬라이싱 기법인 s[::-1]을 사용하면 문자열을 손쉽게 뒤집을 수 있어 팰린드롬 검사가 매우 간단합니다.

예제 코드

def extract_vowels(s):
    # 문자열에서 자음을 제거하고 모음만 추출
    vowels = "aeiou"
    result = ""
    for c in s:
        if c.lower() in vowels:
            result += c
    return result

def is_palindrome(s):
    # 문자열과 그 역순이 같은지 비교
    return s == s[::-1]

# 드라이버 코드
s = "aeoea"
vowel_str = extract_vowels(s)

if len(vowel_str) == 0:
    print(-1)
elif is_palindrome(vowel_str):
    print("YES")
else:
    print("NO")

출력 결과

YES

코드 설명

extract_vowels() 함수는 문자열을 한 글자씩 순회하면서 모음(a, e, i, o, u)에 해당하는 문자만 결과 문자열에 추가합니다. 대소문자를 모두 처리하기 위해 lower() 메서드를 함께 사용했습니다.

is_palindrome() 함수는 슬라이싱 s[::-1]로 뒤집은 문자열과 원본 문자열을 비교합니다. 두 문자열이 완전히 같다면 해당 문자열은 팰린드롬입니다.

드라이버 코드에서는 먼저 모음 문자열이 비어 있는지 확인하여 -1을 출력할지 결정하고, 그렇지 않은 경우 팰린드롬 여부에 따라 YES 또는 NO를 출력합니다.

이 알고리즘의 시간 복잡도는 문자열 길이를 n이라 할 때 O(n)이며, 추가로 사용되는 공간 복잡도 역시 O(n)입니다.

결론

이 글에서는 파이썬을 사용해 주어진 문자열에서 자음을 제거한 후, 남은 모음 문자열이 팰린드롬인지 확인하는 프로그램을 살펴보았습니다. 문자열 슬라이싱과 간단한 조건 분기를 활용하면 몇 줄의 코드로도 이 문제를 효율적으로 해결할 수 있습니다.