본문 바로가기
프로그래밍 언어(Programming Languages)/LeetCode

[코딩 인터뷰] LeetCode - Two Pointers - 125. Valid Palindrome

by 데이터 벌집 2024. 1. 1.

안녕하세요 여러분! 🎉 오늘은 재미있고 흥미로운 프로그래밍 문제를 함께 풀어볼 거예요. 🚀 이번에 다룰 문제는 문자열이 회문(palindrome)인지 아닌지를 판별하는 문제입니다. 🧐 회문이란 앞으로 읽으나 뒤로 읽으나 동일한 문자열을 말해요. 문자열 처리 능력을 향상시키는 데 도움이 되는 문제죠! 📚

 

 

Valid Palindrome

 


🎯 문제 설명:

  • 주어진 문제는 문자열 s가 회문인지 판별하는 것입니다. 이때, 모든 대문자는 소문자로 변환되고, 비문자와 숫자가 아닌 문자들은 제거됩니다.

릿코드 문제보기


알아야 할 개념 공부하기 📘:

  • 회문(Palindrome): 앞뒤가 똑같은 문자열. 예를 들어, 'radar', 'level' 등.
  • 문자열 처리: Python에서 문자열을 소문자로 변환(lower()), 비문자 제거 등의 처리 방법.

 

문자열 순회: 문자열을 앞에서부터 또는 뒤에서부터 순회하는 방법.

Python에서 [::-1]은 슬라이스(slice) 표현식의 한 형태로, 문자열이나 리스트와 같은 시퀀스를 뒤집을 때 사용됩니다. 이 구문은 Python의 강력한 슬라이싱 기능 중 하나로, 간단하고 효율적인 방법으로 시퀀스를 역순으로 만듭니다.

슬라이스 표현식 [::-1]의 구성요소는 다음과 같습니다:

  • 첫 번째 콜론(:)은 슬라이싱을 시작하겠다는 것을 의미합니다.
  • 두 번째 콜론(:) 이후의 -1은 스텝(step) 값으로, 시퀀스를 역순으로 한 단계씩 진행하겠다는 것을 의미합니다.
my_string = "hello"
reversed_string = my_string[::-1]  # 'olleh'

여기서 my_string[::-1]은 "hello"라는 문자열을 뒤에서부터 하나씩 가져와 "olleh"라는 새로운 문자열을 만듭니다.

이러한 방식으로, [::-1]을 사용하여 문자열이나 리스트 등의 시퀀스를 쉽게 뒤집을 수 있습니다.


문제 풀어보기 🔍:

  • 문제: "125. Valid Palindrome"
    • 예시 1: s = "A man, a plan, a canal: Panama" ⇒ 출력: true
    • 예시 2: s = "race a car" ⇒ 출력: false
    • 예시 3: s = " " ⇒ 출력: true

이 문제를 풀기 위해서는 주어진 문자열에서 대문자를 소문자로 변경하고, 비문자를 제거한 후 회문인지 확인해야 합니다. 🛠️

 

 

def is_palindrome(s: str) -> bool:
    # Convert the string to lowercase and remove non-alphanumeric characters
    cleaned = ''.join(char.lower() for char in s if char.isalnum())

    # Check if the cleaned string is the same as its reverse
    return cleaned == cleaned[::-1]

# Test the function with examples
example1 = "A man, a plan, a canal: Panama"
example2 = "race a car"
example3 = " "

print(is_palindrome(example1))  # Expected output: True
print(is_palindrome(example2))  # Expected output: False
print(is_palindrome(example3))  # Expected output: True

여러분, 오늘 배운 문자열 처리 방법과 회문 판별 방법은 프로그래밍에서 매우 유용하게 쓰입니다. 🎯 이러한 기초적인 알고리즘 문제를 통해 논리적 사고와 코딩 능력을 키워나가면서 즐겁게 학습해봅시다! 🚀 다음에 더 흥미로운 문제로 찾아뵐게요! 🌟🎉📚