눈송이의 개발생활

[BOJ]6588 - 골드바흐의 추측 (Python) 본문

Algorithm/BOJ

[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