백준 1747번 바로가기

생각보다 간단하게 풀린 문제였다. 다만, 문제조건을 잘못 봐서 초기에 조금 헤맸다. n 이상인지 이하인지에 주의하고 범위설정에 유의해야겠다. 이 문제의 경우 1,000,000이 input으로 주어질 경우 output이 없는 문제가 발생하는데 범위를 1,005,000까지 여유있게 잡아주면 문제 없이 실행된다. 그외에는 팰린드롬과 소수판별 알고리즘만 짤 수 있다면 쉽게 해결 가능한 문제였다.

import sys

def pal(n):
  return str(n) == str(n)[::-1]

def prime(n):
  if n < 2:
    return False
  for i in range(2, int(n ** 0.5) + 1):
    if n % i == 0:
      return False
  return True

m = int(sys.stdin.readline())
for i in range(m, 1005000):
  if pal(i) == True and prime(i) == True:
    print(i)
    break