JustDoEat
[Python/String-Manipulation]Valid Palindrome 본문
펠린드롬이란 ?
팰린드롬"은 주어진 문자열을 앞으로 읽든 뒤로 읽든 동일한 문자열인 경우를 말합니다. 다만, 팰린드롬 여부를 판단할 때 대소문자의 차이나 알파벳 이외의 문자는 무시하며, 숫자와 문자만을 고려합니다
str = "A man, a plan, a canal: Panama" upperstr = ''.join(c.upper() for c in str if c.isalnum()) reversedstr = "" for i in range(len(upperstr) - 1, -1, -1): reversedstr += upperstr[i] if upperstr == reversedstr: print("true") else: print("false") |
upperstr = ''.join(c.upper() for c in str if c.isalnum())
이 코드는 문자열에서 알파벳과 숫자만 추출하여 대문자로 변환하는 부분입니다
1. for c in str: 문자열 str을 한 글자씩 반복합니다.
2. if c.isalnum(): 해당 글자 c가 알파벳이나 숫자인지를 확인합니다. isalnum() 함수는 알파벳 또는 숫자이면 True를 반환합니다.
3. c.upper(): 알파벳인 경우에는 대문자로 변환합니다.
4. ''.join(...): 위에서 생성된 문자들을 빈 문자열에 합칩니다.
슬라이스를 사용하여 문자열을 역순으로 순회
str = "A man, a plan, a canal: Panama" upperstr = ''.join(c.upper() for c in str if c.isalnum()) reversedstr = upperstr[::-1] if upperstr == reversedstr: print("true") else: print("false") |
슬라이스란?
예시) upperstr[start:stop:step]
start: 슬라이스의 시작 인덱스를 나타냅니다. 이 값은 포함됩니다.
stop: 슬라이스의 끝 인덱스를 나타냅니다. 이 값은 포함되지 않습니다.
step: 슬라이스의 간격을 나타냅니다.