tier 팰린드롬수

풀이

주어지는 문자열 의 길이를 이라 합시다. 모든 인덱스 에 대해 인지 확인하거나 파이썬의 문자열 슬라이싱 기능을 이용해 뒤집은 다음 비교하면 됩니다.

최적화

인덱스를 비교하는 부분을 조금 더 최적화 해 봅시다. 꼭 모든 에 대해 확인해 봐야 할까요? 의 절반을 넘어가면 의 절반보다 작아지므로 이미 비교한 경우를 다시 비교하게 됩니다. 따라서 인 경우만 비교해도 됩니다.

위 부등식을 정리하면 입니다.

  1. 이 짝수인 경우 으로 두면 이므로 인 경우만 체크하면 됩니다.
  2. 이 홀수인 경우 으로 두면 이므로 마찬가지로 인 경우만 체크하면 됩니다.

여기서 이 짝수인지 양수인지와 상관없이 로 나눈 몫은 으로 같으므로 이보다 작은 경우만 체크하면 됩니다.

코드

def is_palindrome(s: str) -> bool:
    length = len(s)
    for i in range(length // 2):
        if s[i] != s[length - i - 1]:
            return False
    return True
 
 
def main():
    while True:
        number = input()
 
        if number == "0":
            break
 
        if is_palindrome(number):
            print("yes")
        else:
            print("no")
 
 
main()