본문 바로가기
Algorithm/구현

[Python3] 백준 1259번 팰린드롬수

by HANNI하니 2023. 1. 4.

1259번: 팰린드롬수 (브론즈1)

문제

 

1259번: 팰린드롬수

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

www.acmicpc.net

정답

내 이름은 이효리, 거꾸로 해도 이효리 '팰린드롬' 문제!

입력값(n)을 왼쪽/오른쪽부터 차례대로 비교하면서 같으면 yes를 출력 아니면 no를 출력하는 형태

 

내 풀이 방식은 보통 사람들의 방식보다 지저분하고 복잡하지만.. 정답으로 인정되었으니 기뻐서 공유해본다 ㅎㅎ

1. n[::-1]가 익숙치 않아서 활용하지 못했다.

2. 입력을 한꺼번에 다 받고, 한꺼번에 출력해야하는 문제로 이해해서 list에 append 하는 형태로 한꺼번에 출력했다.

사실 완벽히 이해 못했다. 입력은 여러 개의 테스트 케이스로 이루어져 있다고 해서 한꺼번에 입력을 받고 출력을 저장해놨다가 마지막에 한꺼번에 출력하는 것이 아닌지.. 둘다 맞는 형태로 인정은 되긴했다.

내 풀이방식이 코드 길이는 2배로 길지만, 시간은 4ms 짧다고 한다.

# 내 풀이방식
yesno = []

while True:
    n = str(input())
    if (n == '0'):
        break
    
    answer = []
    for i in range(len(n)): #n의 개수만큼 왼쪽, 오른쪽을 비교
        if n[0+i] == n[-1-i]:
            answer.append('yes')
    if len(answer) == len(n): #n의 개수만큼 yes가 있다면 팰린드롬 인정 yes
        yesno.append('yes')
    else:
        yesno.append('no')
    

print('\n'.join(yesno))
# 보통 사람들의 정답

while True:
    n = input()
    if (n =='0'):
        break

    if n == n[::-1]:
        answer = 'yes'
    else:
        answer = 'no'
    
    print(answer)

공부한 내용

1. 리스트 거꾸로 확인하기 [n::-1]

2. 문자열 인덱싱. str은 기본적으로 list처럼 인덱싱 가능

input을 굳이 str를 지정하지 않아도 디폴트가 str이다. str는 인덱싱이 가능하기 때문에 list처럼 [] 사용한다.

a = "Life is too short, You need Python"

a[0] = 'L'

 

3. join 이용해서 원하는 형태로 프린트하기

yesno

=> 'yes', 'no', 'yes'

print('\n'.join(yesno))

=> yes

no

yes

 


레퍼런스

  • 다른 정답 풀이

먼저 n을 input 하고, while num != '0'문 돌리기. 마지막에 다시 n을 input() 하는 형태

 

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

https://www.acmicpc.net/problem/1259 PYTHON CODE num = input() while num != '0': if num[::-1] == num: print('yes') else: print('no') num = input()

claude-u.tistory.com

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

댓글