■ 문제 링크
https://www.acmicpc.net/problem/1259
1259번: 팰린드롬수
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.
www.acmicpc.net
■ 문제
본 문제는 solved.ac 브론즈 1 문제이다.
■ 풀이
처음에 반복문 안에서 시작한다. 이는, 0을 입력 받았을때, 소스코드를 종료하기 위함이다.
number를 입력 받는데,
예를들어 number이 1221일때, 펠린드롬 수인지 분별하기 위해, 우리는 이것을 비교하게 된다.
number[0] == number[-1]
number[1] == number[-2]
이 두개가 모두 같은지 확인하기위해,
우선 기본값은 'yes'인 answer 변수를 만들어주며, 하나라도 만족하지 못할 때 'no'로 바꾸어준다.
그리고 반복문을 돌리는데, 범위는 0부터, len(number)//2 까지이다.
이것도 왜 그런지 예시를 들어 생각하면 편한데, 비교해야하는 갯수는
4자리의 숫자일 경우, number[0] == number[-1], number[1] == number[-2] -> 2개
5자리의 숫자일 경우 number[0] == number[-1], number[1] == number[-2] -> 2개
6자리의 숫자일 경우 number[0] == number[-1], number[1] == number[-2], number[2] == number[-3] -> 3개
이므로, 반복문의 범위는 저렇게 설정해 주는 것이다.
펠린드롬수는 이 조건들을 하나도 틀리지 않고 모두 만족해야하므로,
a한 번이라도 틀리면 바로 변수 answer를 'no'로 바꾸게 진행하며, answer를 출력한다.
while True:
number = input()
if number == '0':
break
answer = 'yes'
for i in range(0,len(number)//2):
if number[i] != number[-i-1]:
answer = 'no'
print(answer)
'Algorithm > Python' 카테고리의 다른 글
[BOJ] 2231 분해합 - Python (0) | 2023.08.12 |
---|---|
[BOJ] 2869 달팽이는 올라가고 싶다 - Python (0) | 2023.08.12 |
[BOJ] 1157 단어공부 - Python (0) | 2023.08.12 |
[BOJ] 1181 단어 정렬 - Python (0) | 2023.08.12 |
[BOJ] 10814 나이순 정렬 - Python (0) | 2023.08.12 |