algorithm/baekjoon
[백준] 9020번 골드바흐의 추측 (파이썬)
support_u
2023. 2. 9. 15:24
풀이
# 시간오류를 막기위해 먼저 리스트로 묶음
sosu = []
for i in range(2, 10000):
for j in range(2, int(i**0.5)+1):
if i % j == 0:
break
else:
sosu.append(i)
for _ in range(int(input())):
n = int(input())
# n을 절반으로 나눔
for i in range(len(sosu)):
if n // 2 == sosu[i]:
break
if n // 2 < sosu[i]:
i -= 1
break
# 범위를 넣을려면 for이 while보다 편할 것같아서 break 나올 수 있는 변수를 넣음
stop = 0
# 중간부터 작아지는 수
for num_1 in sosu[i : : -1]:
# 이미 수가 나왔다면 스탑
if stop > 0:
break
# 중간부터 커지는 수
for num_2 in sosu[i : ]:
if n == num_1 + num_2:
print(num_1, num_2)
stop = 1
break
아쉬운점
- n // 2는 몫만 나오니까 작을 경우는 필요가 없었다
- stop으로 저렇게 나올려면 while 이 편했을것 같다는 생각이 들었다.