공부하기/백준

[Python] 백준 풀기 1259 - 팰린드롬수

XEV 2022. 12. 15. 21:47

파이썬 백준 1259번

브론즈 1

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

 

1259번: 팰린드롬수

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

숫자의 각자리를 deque() 를 이용하여 하나하나 입력 저장한다.

입력으로 한자리 수가 들어오면 바로 "yes" 를 출력하여 끝내고, 그렇지 않으면 deque 의 성질을 이용하여 popleft() 와 pop() 으로 리스트 양 끝의 숫자를 하나씩 빼어 같은지를 비교한다. 만약, while loop 을 도는 동안 같지 않으면 "no" 를 출력하고, 양끝단을 지속적으로 지워나가면서 리스트의 길이가 1 보다 작게 되면 "yes" 를 출력한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline
from collections import deque


def fnIsPalindrome(num_ls):
    if len(num_ls) == 1:
        print("yes")
    else:
        while 0 <= len(num_ls):
            left = num_ls.popleft()
            right = num_ls.pop()
            if left != right:
                print("no")
                break
            elif left == right and (len(num_ls) <= 1):
                print("yes")
                break
    

if __name__ == "__main__":
    while True:
        num_ls = deque(map(int, inputdata().strip()))
        # print(num_ls)           # test print
        
        if num_ls[0] == 0:
            break
        else:
            fnIsPalindrome(num_ls)