본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1747 소수&팰린드롬

by Alan_Kim 2023. 2. 23.
728x90
반응형

https://www.acmicpc.net/problem/1747

 

1747번: 소수&팰린드롬

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,

www.acmicpc.net

 

문제 해결

  • n이상의 소수에서 찾는 것이므로 리스트의 원소 개수를 1,000,000(n의 최댓값)보다 커야한다. ($\times$ 10 함)
  • 소수는 에라토스테네스체로 걸러낸다.

CODE

import sys
input = sys.stdin.readline
import math
n = int(input())
A = [0]*(10000001)

for i in range(2, len(A)):
    A[i] = i

for i in  range(2, int(math.sqrt(len(A))+1)):
    if A[i] ==0:
        continue
    for j in range(i+i, len(A),i):
        A[j] =  0

def isPalindrome(target): # 팰린드롬 수 판별 함수
    temp = list(str(target))
    s = 0
    e = len(temp) - 1
    while (s<e):
        if temp[s] != temp[e]:
            return False
        s += 1
        e -= 1
    return True

i = n
while True:
    if A[i] != 0:
        result = A[i]
        if (isPalindrome(result)):
            print(result)
            break
    i += 1
728x90
반응형

댓글