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')
'코딩 테스트 > Python' 카테고리의 다른 글
[백준 코딩테스트(Python)] - 10845번 큐 (1) | 2022.11.22 |
---|---|
[백준 코딩테스트(Python)] - 2609번 최대공약수와 최소공배수 (유클리드 호제법) (0) | 2022.11.15 |
[백준 코딩테스트(Python)] 정렬 - 좌표 압축 (0) | 2022.10.26 |
[백준 코딩테스트(Python)] 정렬 - 좌표 정렬하기, 좌표 정렬하기 2 (0) | 2022.10.20 |
[백준 코딩테스트(Python)] 정렬 - 통계학 (1) | 2022.10.07 |