본문 바로가기
Algorithm_PYTHON

[백준_파이썬]1259_팰린드롬수

by 코리니덕 2021. 9. 11.

쉬운 문젠데 헤매네 ㅎㅎ

https://www.acmicpc.net/problem/1259

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

 

- 여기서 팰린드롬 풀 때, 문자열 길이가 홀수일 때, 짝수일 때로 나눠서 그 문자열 길이의 반으로 나눠서 그 앞과 그 뒤를 나누고, 둘 중 하나를 거꾸로 한 다음 그 두개가 같은지 비교했다

- 하지만, 그럴 필요가 없다 ㅎ. 애초에 설명해놓은 것도 어떻게 풀어 써야할지 ㅎㅎ;;

- 어차피 팰린드롬수이면 거꾸로 문자를 뒤집어도 짝수일땐 문제 없고, 홀수여도 하나 남는 수가 주축이 되니까 굳이 첫번째처럼 나눌 필요가 없어진다

- 그치만, 이 두 방법은 메모리, 시간에 차이가 없다

while True:
    num = input()
    if num == '0': # stringㅇ로 받으면 string으로 받아야지,,
        break

    # 방법 1. 
    # 팰린드롬이기 때문에 반을 나누고 앞 뒤로 같은지 확인하면 됨
    # n = (len(num) //2)
    
    # a = num[:n]
    # if len(num) % 2 == 0: # 짝수일때
    #     reverse = num[n:]
    # else: # 홀수일때
    #     reverse = num[n+1:]
    
    # if a == reverse[::-1]:
    #     print("yes")
    # else:
    #     print("no")

    # 방법2.
    # 굳이 홀수,짝수 안나눠도 됨
    # 그냥 입력받은 문자를 뒤집어서 같은지만 확인하면 됨,,ㅎ
    # 근데 방법 1이랑 메모리, 시간 별로 차이 안남
    if num == num[::-1]:
        print("yes")
    else:
        print("no")