본문 바로가기

프로그래밍/백준 문제풀이

1259. 펠린드롬수 (파이썬)

300x250

 

제목: 1259 펠린드롬수

문제

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

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

입력

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

출력

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

최종 답:

while True:
  p = input()

  if p=='0': 
    break
  
  if p == p[::-1]: #문자열 뒤집기
    print('yes')
  else:
    print('no')

 

문제풀이

if p == p[::-1]: #문자열 뒤집기
  print('yes')
else:
  print('no')

 

  • str [start index: end index: striding number]: striding slicing은 문자열의 일부를 가지고 올 수 있는 기능이다.

예시)

my_str = "Hello World"
print(my_str[::3])

#출력
HIWI

위와 같은 코드의 경우 Hello World의 0, 3, 6, 9번째 문자가 출력된다.

 

다시 문제의 코드로 돌아가서, p[::-1]은 문자열을 거꾸로 출력해준다. 문제에서 뒤집어서 읽어도 숫자가 같다면 펠린드롬수라고 했으므로, 이 경우 'yes'를 출력해 주고, 같지 않은 경우 'no'를 출력한다.

 

*자세한 코드는 깃허브에 올려두었습니다.

https://github.com/Ronnie-hh/Baekjoon/blob/main/1259_answer.ipynb

 

300x250