백준 1747 파이썬 (소수&팰린드롬)

철웅·2023년 2월 22일
0

BOJ

목록 보기
41/46

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


💻 Code

N = int(input())

# 에라토스테네스의 체
def asieve(N):
    sieve = [False, False] + ([True] * (N-1))
    limit = int(N ** 0.5)
    for i in range(2, limit+1):
        if sieve[i] :
            for j in range(i*2, N+1, i):
                sieve[j] = False
    return [i for i in range(2, N+1) if sieve[i]]

# 팰린드롬
def pellin(li):
    result = []
    for i in li:
        if int(str(i)[::-1]) == i:
            result.append(i)
    return result

selection = asieve(1000000)
selection = pellin(selection)

res = 0
for i in selection:
    if i >= N:
        res = i
        break

if res == 0:
    res = 1003001
print(res)        
  • 에라토스테네스 체 복습하는 느낌으로 나쁘지 않았지만 진짜 개같은 문제였다

  • n의 범위는 입력값의 범위지 출력값의 범위가 아니기 때문에 n이 특정 수를 넘어간다면 백만 이내의 수에서 소수이면서 팰린드롬인 수가 나오지 않는다 따라서 그럴 경우에 백만을 넘어가지만 가장 작은 소수이면서 팰린드롬인 수 1003001이 출력되도록 해야한다.

  • int(str(i)[::-1]) == i : 숫자 뒤집을 때 슬라이싱 활용하는거 까먹지 않기!

0개의 댓글