파이썬 백준 1259번
브론즈 1
https://www.acmicpc.net/problem/1259
문제 보기
분류: 구현, 문자열
문제 풀기
숫자의 각자리를 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)
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 2775 - 부녀회장이 될테야 (0) | 2022.12.17 |
---|---|
[Python] 백준 풀기 11497 - 통나무 건너뛰기 (0) | 2022.12.16 |
[Python] 백준 풀기 10824 - 네 수 (0) | 2022.12.14 |
[Python] 백준 풀기 2527 - 직사각형 (0) | 2022.12.13 |
[Python] 백준 풀기 1297 - TV 크기 (0) | 2022.12.12 |