Python/알고리즘 - 백준

[백준] 1259 : 팰린드롬수 (파이썬)

Jong_seoung 2022. 10. 24. 23:27
반응형

문제 링크 : https://www.acmicpc.net/problem/1259

 

1259번: 팰린드롬수

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

www.acmicpc.net


 


문제  요약

어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다.

수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬 수다. 121, 12421 등은 팰린드롬 수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬 수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.

입력

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

 

💡 접근법

1. 입력 받은 값을 for문을 써서 비어있는 문자열에 뒤에서부터 append 한 다음에 원래의 값이랑 비교해보려 하였다.

2. 반을 나눠서 앞의 값과 뒤의 값이 같은지 비교해보려 하였다.

 

문제점

  1.  1번의 경우는 코드가 너무 더러워졌고 2번의 경우는 문자열이 홀수인 경우 처리하는 코드를 짜니 너무 길어졌다.

해결법

  • 생각보다 쉬운 해결 방법이 있었다. 파이썬에는 a [::-1]를 이용해서 쉽게 풀 수 있었다.

CODE

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

 

 

풀이 [리스트의 슬라이싱]

문자열과 마찬가지로 리스트에서도 슬라이싱 기법을 적용할 수 있다. 슬라이싱은 "나눈다"라는 뜻이다.

1. 리스트 슬라이싱
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
[1, 2]

2. 문자열 슬라이싱
>>> a = "12345"
>>> a[0:2]
'12'

3. 기본이 되는 리스트 a
a = [1, 2, 3, 4, 5]

4. b = a의 처음부터 1번 인덱스까지의 값
b = a[:2]

5. c = a의 2번부터 마지막 인덱스 까지의 값
c = a[2:]

6. d = a를 뒤에서부터 읽어 오기
d = a[::-1]

7. 출력값
b = [1, 2]
c = [3, 4, 5]
d = [5, 4, 3, 2, 1]

 

반응형