wnscjf   2년 전

어떻게 하면 좋을까요. 도움부탁드립니다 ㅠㅠ

sweetlulu486   2년 전

이 방법의 시간복잡도가 어떻게 되나요?

wnscjf   2년 전

입력하면 바로 출력이 돼요

dbshin59   2년 전

테스트 케이스가 1개일 때는 바로 출력이 됩니다.

하지만 4부터 10000까지 모든 짝수를 대상으로 해서 돌리면 시간이 매우 오래 걸리더라고요.

Pypy3을 쓰면 억지로 맞기는 합니다만... 에라토스테네스의 체를 쓰시는 것을 권장드립니다.

wnscjf   2년 전

2가지 예시를 들었는데 첫번째 예시가 에라토스테네스의 체를 이용한거같은데 다른방법이 있는걸까요?

dbshin59   2년 전

27번줄의 in이 작동하는 방식은... 좀 무식합니다.

배열 전체를 돌아보면서 있는지 없는지 파악하는 것이거든요.

이런 방법 대신 크기 10000짜리 배열을 만든 후에, 소수인 것은 참으로, 아닌 것은 거짓으로 설정하시면

in을 쓸 필요 없이 바로 원하는 값에 접근할 수 있습니다.

wnscjf   2년 전

11번 시도만에 해결했습니다 감사합니다 

import sys
def c(n):
    d=[True]*n
    h=int(n**0.5)
    for i in range(2,h+1):
        if d[i]==True:
            for j in range(i+i,n,i):
                d[j]=False

    return [i for i in range(2,n) if d[i]==True]

q=[True]*10000
h=int(10000**0.5)
for i in range(2,h+1):
    if q[i]==True:
        for j in range(i+i,10000,i):
            q[j]=False
q[0]=False
q[1]=False

a=int(sys.stdin.readline())
for j in range(0,a):
    b=int(sys.stdin.readline())

    f = c(b+1)
    d = []
    for k in f:
        d.append(k)
    d.reverse()
    w=b
    for k in d:
        g=b-k

        if q[g] == True:
            m = k-g
            if 0 <= m and k>=g:
                w = m
                x = k
                y = g
    print(f'{y} {x}')

댓글을 작성하려면 로그인해야 합니다.