본문 바로가기
코딩테스트 연습/백준 Boj

[Python] 백준 (소수&팰린드롬)

by Lagooni 2021. 11. 4.

문제

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.

어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다.

출력

첫째 줄에 조건을 만족하는 수를 출력한다.

예제 입력 1

31

예제 출력 1

101

문제풀이

  • 팰린드롬 == 123321, 가나다나가   등 뒤집어도 같은 수
  • 소수를 판별하는 함수를 만들어 둔다.(isPrime)
  • 입력한 숫자부터 1000000까지 팰린드롬 수를 찾는다.
  • 만약 n이 커서 출력이 10000000이 넘는 경우가 생길 수 있다.
    • 반복문을 다 도는 동안 result에 답이 없다면 가장 작은 소수중 팰린드롬인 1003001을 출력한다.
import sys

n = int(sys.stdin.readline().rstrip())
result = 0

#소수인지 판별하는 함수
def isPrime(x):
    for i in range(2, int((x**0.5)+1)):
        if x % i == 0:
            return False
    return True

for i in range(n, 1000001):
    if i == 1:
        continue
    if str(i) == str(i)[::-1] and isPrime(i):
        result = i
        break

if result == 0:
    result = 1003001

print(result)

문제의 쉼표(,)를 두 숫자로 쪼개어 봤었다.

79와 197인줄.. 올라온 질문을 보니 세상에 나랑 같은 생각을 한사람은 반드시 있다.

댓글