반응형
1. 문제
2. 설명
역시나 이 문제도 타임아웃과의 싸움이였다.
1. 차이가 가장 적으려면 출발점을 반절 값에서 시작한다.
2. 반절값부터 한쪽은 1씩 줄어들고, 한쪽은 1씩 늘어나면서 그 값들이 소수인지 판별한다.
3. 코드
정답 코드
from sys import stdin
T=int(stdin.readline())
def prime(number):
if number<2:
return False
for j in range(2,int(number**0.5)+1):
if number%j==0:
return False
return True
for i in range(T):
n=int(stdin.readline())
a=int(n/2)
b=int(n/2)
for k in range(int(n/2)):
if prime(a)and prime(b):
print(a,b)
break
else:
a=a-1
b=b+1
내가 작성한 코드
import math
import sys
def IsPrime(num):
a = int(math.sqrt(num))
if num == 1:
return False
else:
for i in range(2, a+1):
if num % i == 0:
return False
return True
Num_list = list(range(2,10000))
Sort_list = []
for i in Num_list:
if IsPrime(i):
Sort_list.append(i)
t = int(sys.stdin.readline())
for i in range (0,t):
n = int(sys.stdin.readline())
first = 0; second = 0; minus = 10000;
for k in Sort_list:
for j in Sort_list:
if k+j == n and j-k < minus and j-k > 0:
first = k; second = j
break
print(first,' ',second)
배열을 만들어주고 for문을 돌리니 따져야할 것이 많아져 타임아웃이 나왔던 것 같다.
반응형
'코딩테스트(python) > 백준' 카테고리의 다른 글
백준 10870번 파이썬 (0) | 2022.09.05 |
---|---|
백준 10872번 파이썬 (0) | 2022.09.05 |
백준 4938번 파이썬 (0) | 2022.09.02 |
백준 1929번 파이썬 (0) | 2022.09.02 |
백준 11653번 파이썬 (0) | 2022.08.30 |