반응형
문제
팰린드롬 수는 앞으로 읽어도, 뒤로 읽어도 같은 숫자이다. 101, 4, 6666와 같은 숫자는 팰린드롬 수이고, 10, 564, 15452와 같은 숫자는 아니다.
어떤 수 N이 주어질 때, N보다 큰 팰린드롬 수 중에서 가장 작은 수를 출력한다.
입력
첫째 줄에 N이 주어진다. N은 최대 50자리인 양의 정수이다. 첫 숫자는 0이 아니다.
출력
첫째 줄에 문제의 정답을 출력한다.
풀이
n = input()
l = len(n)
if l == 1: # 1의자리 수
n = int(n)
if n == 9:
print(11)
else:
print(n+1)
elif l & 1: # 홀수 자리 수
a = int(n[:l//2][::-1]) # 앞자리
b = int(n[l//2+1:]) # 뒷자리
if a > b:
print(n[:l//2]+n[l//2]+n[:l//2][::-1])
else:
if int(n[l//2]) == 9:
c = str(int(n[:l//2])+1)
if len(c) == len(n[:l//2]): print(c + "0" + c[::-1])
elif len(c) > len(n[:l//2]): print(c + c[::-1])
else:
print(n[:l//2] + str(int(n[l//2]) + 1) + n[:l//2][::-1])
else: # 짝수 자리 수
a = int(n[:l//2][::-1])
b = int(n[l//2:])
if a > b:
print(n[:l//2]+n[:l//2][::-1])
else:
c = str(int(n[:l//2])+1)
if len(c) == len(n[:l//2]):
print(c + c[::-1])
elif len(c) > len(n[:l//2]):
print(c + c[::-1][1:])
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Silver I #9465 스티커 (0) | 2023.06.12 |
---|---|
[백준/Python] Silver V #1308 D-Day (0) | 2023.06.12 |
[백준/Python] Silver I #1932 정수 삼각형 (0) | 2023.06.11 |
[백준/Python] Silver I #1149 RGB거리 (0) | 2023.06.11 |
[백준/Python] Silver III #2407 조합 (0) | 2023.06.11 |
Comment