본문 바로가기

백준 문제풀이/문자열

백준 1259 Python / 팰린드롬수 / 브론즈1

안녕하세요.

이번 문제는 백준 1259 팰린드롬수 입니다. 회문과 비슷한 문제겠네요. (소주만병만주소 와 같은..)

파이썬으로 풀어보겠습니다.

 

링크는 아래와 같습니다.

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

 

1259번: 팰린드롬수

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

www.acmicpc.net

 


풀이

 

파이썬을 이용하면 짧고 간단하게 풀 수 있습니다.

리스트 슬라이싱을 이용해서, [::-1] 과 같은 형태면 역순정렬된 리스트가 나오기 때문입니다.

reverse를 이용해서 같은지 비교해도 되겠습니다.

 

import sys

while True:
    n = int(sys.stdin.readline())
    if n <= 0:
        break
    word = list(str(n)) # 숫자를 한 자리씩 리스트에 저장
    if word == word[::-1]: # 리스트와 리스트(역순)이 같은지 검사
        print('yes')
    else:
        print('no')

 

슬라이싱 방법 말고 다른 방법으로도 풀어보면,

앞에서 부터 하나하나 비교하는 방법을 이용해도 되겠습니다.

 

i는 0번부터, j는 마지막 인덱스부터 시작해서

i가 j보다 작은 동안,

i 번째와 j 번째가 같은지 검사하면 되겠지요?

파이썬 코드로 적어보면 이럴 것입니다.

 

import sys

while True:
    n = int(sys.stdin.readline())
    if n <= 0:
        break
    word = list(str(n))  # 숫자를 한 자리씩 리스트에 저장
    i, j = 0, len(word)-1
    flag = 1
    while i <= j:
        if word[i] != word[j]: # 글자가 다르다면
            flag = 0
            print('no')
            break
        i += 1
        j -= 1
    if flag : print('yes')

 

감사합니다.

'백준 문제풀이 > 문자열' 카테고리의 다른 글

백준 1181 Python / 단어 정렬 / 실버5  (1) 2023.02.04