눈송이의 개발생활
[BOJ]6588 - 골드바흐의 추측 (Python) 본문
문제
https://www.acmicpc.net/problem/6588
코드
import sys
r = 1000000
sieve = [True for _ in range(r)]
for i in range(2, int(r**0.6)):
if sieve[i]:
for j in range(i + i, r, i):
sieve[j] = False
while True:
n = int(sys.stdin.readline())
if n == 0:
break
for k in range(3, r):
if sieve[k]:
if sieve[n-k]:
print("%d = %d + %d"%(n , k , n-k))
break
풀이
계속 작은 조건들때문에 많이 틀린 문제이다.
문제였던 부분은..
- 100000까지의 소수를 찾는 과정을 1번만 하면 되는데 n을 입력받을 때마다 실행해서 시간초과가 뜸
이렇게 상황에 따라 매번 해야하는 경우가 있고, 한 번만 하는 경우가 있는데 전혀 생각하지 못한 부분이었다.
질문 글을 본 뒤에야 여러번 할 필요가 없다는 것을 깨닳았다.
그리고 아직 파이썬 문법이 익숙하지 않아서 자잘한 실수도 많이 한다.
예를 들어 아래 코드에서 a1과 a2의 출력결과는 같다.
a1 = [True] * 3
print(a1)
a2 = [True for _ in range(3)]
print(a2)
> [True, True, True]
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]1476 - 날짜 계산 (Python) (0) | 2022.01.11 |
---|---|
[BOJ]3085 - 사탕 게임 (Python) (0) | 2022.01.11 |
[BOJ]1929 - 소수 구하기 (Python) (0) | 2022.01.06 |
[BOJ]17427 - 약수의 합 2 (Python) (0) | 2022.01.06 |
[BOJ]13305 - 주유소 (C++) (0) | 2022.01.05 |
Comments