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

Cllaude·2023년 7월 15일
1

backjoon

목록 보기
37/65


문제 분석

에라토스테네스의 체를 이용해 최대 범위에 해당하는 모든 소수를 구해 놓은 후 이 소수들의 집합에서 N보다 크거나 같으면서 팰린드롬 수인 것을 찾아내면 되는 문제이다.
팰린드롬 수를 판별할때 숫자의 값이 리스트 형태로 적절하게 변환이 가능하다는 점을 이용하여 투포인터를 이용하여 비교과정을 거치면된다.


소스 코드

# 소수 & 팰린드롬

import math
N = int(input())
arr = [0] * (10000001)

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

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


def isPalindrome(num):
    number = list(str(num))
    start = 0
    end = len(number) - 1

    while start < end:
        if number[start] != number[end]:
            return False
        start += 1
        end -= 1
    return True


idx = N
while True:
    if arr[idx] != 0 and isPalindrome(arr[idx]):
        print(arr[idx])
        break
    idx += 1

0개의 댓글