처음 떠올렸던 접근 방법
처음에 팰림드롬 수를 어떻게 판별할지 생각을 오래 했는데, 그냥 '리스트 슬라이싱'을 활용하면 됐다.
또한 소수 판별에 '에라토스테네스의 체'를 사용할지 고민을 해봤는데, 소수를 무조건 다 찾을 필요 없이 팰림드롬 수일 경우에만 검사를 하면 되기 때문에 에라토스테네스의 체보다 간략하게 소수판별 함수를 구성했다.
최종 입력 코드
import math
def isPrime(x): # 소수인지 판별해주는 함수
for i in range(2, int(math.sqrt(x)+1)):
if x % i == 0:
return False
return True
N = int(input())
result = 0
for i in range(N, 1000001): # 입력값 N 부터 최대값 까지 순환
if i == 1: # 1은 소수가 아니기 때문에 예외처리
continue
if str(i) == str(i)[::-1]: # 팰림드롬 수 일 경우
if isPrime(i) == True: # 소수 판별 함수 적용
result = i
break
if result == 0: # 입력값이 만약 최대 값 100만일 경우
result = 1003001 # 100만 이상이면서 팰림드롬 및 소수일 경우를 적용
print(result)
코드를 다 작성하고 제출을 했는데 오답처리가 나길래 다시 한번 확인해보니, 입력값이 최대 값인 100만일 경우를 고려해주지 못해서 발생한 오답처리였다.
따라서 맨 마지막에 최대 값이 100만일 경우를 예외처리 해주는 코드를 추가했다.
문제를 풀 때 수의 범위와 예외적으로 고려해주어야할 사항을 잘 확인해야겠다.