코딩 테스트/Python

[백준 코딩테스트(Python)] - 1259번 팰린드롬수

알밤바 2022. 11. 15. 09:14
728x90
반응형

 

1259번: 팰린드롬수

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

www.acmicpc.net

 

문제

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

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

 

입력

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

 

출력

각 줄마다 주어진 수가 팰린드롬수면 'yes', 아니면 'no'를 출력한다.

 


1. 문제 접근 방식

사실 이 문제는 어렵다기 보다는.. 새로운 사실을 알게 되어 기록하기 위해 포스팅하는 중이다!

처음에 이 문제를 풀 때에는 각 문자의 가장 맨 앞, 맨 끝부터 하나씩 수가 같은지 확인하려고 하였으나, 생각보다 마음대로 되지 않았다.

그리고 알게 된 방법은 바로... 파이썬 리스트의 슬라이싱을 활용한 거꾸로 출력하는 방법이다.

 

word = '12345'
word[::-1]

# [output] '54321'

문자열을 [::-1]라는 인덱스로 출력하게 되면 거꾸로 출력이 된다.

 

문자열[start:end:step] : step만큼 문자열을 건너뛰면서 start 인덱스부터 end -1 인덱스까지 추출한다.

                                            여기서 start와 end를 기재해주지 않으면 처음과 끝을 뜻하며 전체 문자열에 해당한다.

                                            step에 -1을 기재하면 역순으로 출력된다.

 

위와 같은 문법으로 인해서 문자열[::-1]이라는 인덱스로 출력하게 되면 문자열이 역순으로 출력되는 것이다.⭐

 

word = '12345'
word[4:2:-1]

# [output] '54'

start, end에 인덱스를 추가해주게 된다면 원하는 문자열만 슬라이싱되고, 역순으로 나온다.

하지만 역순으로 출력하고 싶다면 start가 end의 인덱스보다 이후의 인덱스로 기재해야 한다. 

위의 예시에서 word[2:4:-1]라고 출력을 한다면 빈 문자열이 출력이 된다.

또한 word[4:2]라고만 출력을 해도 빈 문자열이 출력이 된다.

 

 

 

2. 풀이 코드

while True:
    N = input()

    if N == "0":
        break
    
    if N == N[::-1]:
        print('yes')
    else:
        print('no')

 

728x90
반응형