[백준] 24039번 2021은 무엇이 특별할까?

거북이·2023년 1월 9일
0

백준[실버5]

목록 보기
86/114
post-thumbnail

💡문제접근

에라토스테네스의 체를 이용해서 소수를 먼저 구해야겠다는 생각을 먼저 했는데 어디까지 구해야할지 고민하다가 N의 값 범위를 보고 알 수 있었다.
연속한 두 소수의 곱의 최댓값은 101 × 103 = 10403이므로 103이하의 소수를 구해주면 된다.

💡코드(메모리 : 30616KB, 시간 : 36ms)

N = int(input())
prime_number = [True] * 104
prime_number[0] = False
prime_number[1] = False
for i in range(2, 104):
    if prime_number[i]:
        for j in range(2*i, 104, i):
            prime_number[j] = False

li = []
for i in range(len(prime_number)):
    if prime_number[i]:
       li.append(i)

result = []
for i in range(len(li)-1):
    result.append(li[i] * li[i+1])

for i in range(len(result)):
    if result[i] > N:
        print(result[i])
        break
    elif result[i] == N:
        print(result[i+1])
        break

💡소요시간 : 6m

0개의 댓글