반응형
안녕하세요 여러분! 🎉 오늘은 재미있고 흥미로운 프로그래밍 문제를 함께 풀어볼 거예요. 🚀 이번에 다룰 문제는 문자열이 회문(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
여러분, 오늘 배운 문자열 처리 방법과 회문 판별 방법은 프로그래밍에서 매우 유용하게 쓰입니다. 🎯 이러한 기초적인 알고리즘 문제를 통해 논리적 사고와 코딩 능력을 키워나가면서 즐겁게 학습해봅시다! 🚀 다음에 더 흥미로운 문제로 찾아뵐게요! 🌟🎉📚
반응형
'프로그래밍 언어(Programming Languages) > LeetCode' 카테고리의 다른 글
[코딩 인터뷰] LeetCode - 383. Ransom Note 파이썬 해시 테이블과 카운터 사용법 (69) | 2024.01.03 |
---|---|
[코딩 인터뷰] LeetCode - 392. Is Subsequence 문자열 문제 정복 (73) | 2024.01.02 |
[코딩 인터뷰] LeetCode - Array/Strings - 169. Majority Element (82) | 2023.12.28 |
[코딩 인터뷰] LeetCode - Array/String - 26. Remove Duplicates from Sorted Array (76) | 2023.12.27 |
[코딩 인터뷰] LeetCode - Array / String - 27. Remove Element (82) | 2023.12.26 |