전체 회차
A-010Day 102026.05.12easyleetcode #125neetcode150

올바른 팰린드롬

#two-pointers#string
leetcode #125 · valid-palindrome
01

문제

· problem
P.010

올바른 팰린드롬

leetcode #125

문구가 팰린드롬인지 판별하는 방법: 모든 대문자를 소문자로 변환하고 모든 영숫자가 아닌 문자를 제거한 후, 앞에서 읽으나 뒤에서 읽으나 같은지 확인합니다. 영숫자 문자는 문자와 숫자를 포함합니다. 주어진 문자열 s에 대해, 이것이 팰린드롬이면 true를 반환하고, 그렇지 않으면 false를 반환하세요.

제약
  • · 1 ≤ s.length ≤ 2 × 10⁵
  • · s consists only of printable ASCII characters
// 지문은 본인 언어 요약 — 원문은 위 링크에서
입출력 예시
example 1input → output
"A man, a plan, a canal: Panama"
true
example 2input → output
"race a car"
false
example 3input → output
" "
true
02

사전 사고

· pre-solve
● 1리스트 출력● 2선택● 3정답 공개
  • 대문자는 어떻게 처리해야 하나요?
  • 어떤 문자를 유지해야 하나요?
  • 문자열이 팰린드롬인지 어떻게 확인하나요?
  • 입력이 빈 문자열이거나 영숫자가 없으면 어떻게 되나요?
  • 공백은 제거하되 구두점은 유지해야 하나요?
  • 원본 문자열이 그대로 팰린드롬인지 확인하나요?
  • 정제된 버전을 저장하기 위해 추가 공간을 사용할 수 있나요?
던질 질문에 체크하고 확인을 누르세요
// 결과는 세션 메모리만 — 새로고침하면 초기화됩니다 (반복 학습)
03

논리 구조

· logic
● 1슬롯 출력● 2슬롯별 선택● 3정답 공개
// 각 슬롯에 들어갈 코드 한 줄을 골라 알고리즘 흐름을 합성해보세요. 코드는 안 짜지만 논리 뼈대는 직접.
step 1· 정제된 문자열 초기화
new = ''
new = []
new = None
cleaned = ''
step 2· 입력 문자열 반복
for a in s:
for i in range(len(s)):
for a in s.lower():
step 3· 영숫자 문자 필터링중첩
if a.isalpha() or a.isdigit():
if not a.isspace():
if a.isupper() or a.isdigit():
if a != ' ' and a != ',':
step 4· 소문자 변환 및 누적│ │ 중첩
new += a.lower()
new += a
new.append(a.lower())
new = new + a.upper()
step 5· 정제된 문자열과 역순 비교
return (new == new[::-1])
return (new == reversed(new))
return (s == s[::-1])
return len(new) == 0
각 슬롯에 한 줄씩 골라보세요
// format: slot — 다른 패턴(재귀·DP 등) 은 ordering·state-first 등 별도 format. ADR-08 후속.
04

문제풀이 · 트레이스

· solve
solution.py
1
class Solution:
2
    def isPalindrome(self, s: str) -> bool:
3
        new = ''
4
        for a in s:
5
            if a.isalpha() or a.isdigit():
6
                new += a.lower()
7
        return (new == new[::-1])
머릿속 dry-run 케이스
// 각 케이스를 머릿속으로 따라가보세요. 막히면 아래 worked example 펼침.
case 1
"A man, a plan, a canal: Panama"
true
case 2
"race a car"
false
case 3
" "
true
// UI 가 walk-through 안 함 — 학습자가 머릿속으로. 막히면 worked example 펼침.