-Code
MAX = 10001
sieve = [False, False] + [True] * MAX
for i in range(2, int(MAX ** 0.5) + 1):
if sieve[i]:
for j in range(i * 2, MAX, i):
sieve[j] = False
for _ in range(int(input())):
n = int(input())
gap = 10000
for i in range(2, n):
if sieve[n - i] and sieve[i] and 0 <= n - i - i < gap:
n1, n2 = i, n - i
print(n1, n2)
처음에 각 수마다 에라토스테네스의 체를 계산했더니 시간 초과가 나서 10000까지 소수를 생성하고 리스트에 담아서 만들었지만 또 시간 초과가 생겼습니다. 그래서 전 문제와 같이 sieve에서 바로 판벌되도록 해서 해결을 했습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 14929번 귀찮아 (SIB) (0) | 2022.05.07 |
---|---|
[백준/파이썬] 11051번 이항 계수 2 (0) | 2022.05.07 |
[백준/파이썬] 4948번 베르트랑 공준 (0) | 2022.05.07 |
[백준/파이썬] 4358번 생태학 (0) | 2022.05.06 |
[백준/파이썬] 18115번 카드 놓기 (0) | 2022.05.06 |