본문 바로가기

프로그래밍/BOJ_Python 목표는 Diamond

[1259 | Python] 팰린드롬수

[1259 | Python] 팰린드롬수

 

🎉문제 총평

흑흑 쉬운데 어려워 일주일 쉬었더니 뇌가 굳은것같다 더 정진할것


🎉조건

앞부터 읽어도, 뒤부터 읽어도 똑같은 숫자를 팰린드롬수라고 한다.

여러개의 숫자 입력시 각 수가 팰린드롬수인지 판단하자.

팰린드롬수인 경우 yes를, 아닌 경우 no를 출력하라.

 

 

 

 


🎉접근방식

처음에 인덱싱을 사용하려다가 실패해서 reverse 함수로 접근.

reverse 함수만 사용하면 쉽게 뒤집을 수 있다고 생각했는데 reverse를 사용하니 str이나 int가 아니라 reverse 형태였다.

그래서 추가적으로 list()랑 join을 사용해야 했다.


🎉try1: 틀렸습니다!

# 1259
num1 = input()
num_list = list(reversed(num1)) # num1을 순서 뒤집고 리스트화하기
num2 = int(''.join(num_list)) # 리스트 내용들 합쳐서 하나의 str로 바꾼 뒤 int형으로 바꾸기

if int(num1) == num2:
    print("yes")
else:
    print("no")

하나의 입력만 처리해서 그런가?

while문을 사용해서 바꿨다.

 

🎉try2: solved!

# 1259
while True:
    num1 = input()
    num_list = list(reversed(num1))
    num2 = int(''.join(num_list))

    if num1 == "0":
        break

    if int(num1) == num2:
        print("yes")
    else:
        print("no")

 

두번만에 해결!😊

사실 중간에 if 문 때문에 좀 헤맸다.

    if int(num1) == num2:
        print("yes")
        
    elif num1 == "0":
        break
        
    else:
        print("no")

처음에 위에처럼 작성했는데 0 입력해도 안끝나서 뭐지?했다.

다시 생각해보니깐 위의 if문에서 이미 yes를 출력하게 되기에 elif문이 돌지 않았던 것...

 


🎉 another code

나는 10줄정도 썼는데 다른 더 깔끔한 코드가 있나 검색을 해보았다.

당연히 있다. 바로 내가 처음에 생각했던 인덱싱을 이용한 코드.

 

while(True):
    a = input()
    if a == "0":
        break
    elif a == a[::-1]:
        print("yes")
    else:
        print("no")

나는 num[:,:,-1] 이런식으로 작성하다가 안되서 reversed 함수를 사용한건데 걍 문법 오류였다.

기본 문법을 튼튼히하고 머리아프다고 다음 방식으로 넘어가는 게 아니라 오류 원인을 찾아보는 태도가 필요할 듯 싶다.😥


코드 출처

 

[🥉1 / 백준 1259 / 파이썬] 팰린드롬수

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

my-coding-notes.tistory.com