실행시켰을 때는 케이스를 여러 개 해도 출력이 빠르게 나오는데 왜 제출에서는 시간 초과가 뜨는지 잘 모르겠습니다. 어느 부분이 잘못된 걸까요?

fccva   2년 전

테스트 케이스마다 에라토스테네스 체를 새로 만들 필요가 없습니다.

그리고 보통 에라토스테네스의 체는 "루트 n 이하의 소수를 모두 저장해놨다가 하나씩 나눠보는 방식"이 아니라

"n이하의 모든 값에 대해서 소수인지 아닌지 미리 저장해두는 방식"입니다.

아래처럼 구현해두면 k가 소수인지 아닌지 isPrime[k]로 알 수 있습니다.

fccva님 답변 감사합니다.

에라토스테네스의 체를 그저 원리만 이해하고 접근하다 보니 복잡한 코드가 된 것 같네요.

배열이나 배열에 대한 메소드도 새롭게 알게 되었습니다.


fccva님의 메소드를 활용하여 BufferedReader와 BufferedWriter도 써가며 풀어봤는데 아직 시간 초과가 뜨네요. 골드바흐 파티션을 구하는 부분에 대해서 시간이 오래 걸리는 문제가 발생하는 것 같은데 조건이 길면 실행 시간에도 큰 영향이 있는 건가요?

골드바흐 파티션을 구하는 코드는 fccva님이 작성하신 메소드를 기반으로 다음과 같이 작성하였습니다.

fccva   2년 전

이중루프를 돌 필요가 없습니다.

for문 하나로 확인할 수 있는 방법이 있습니다.

확인과 힌트 감사합니다.

for문 한 개로 파티션을 구했더니 확실히 처리가 빨라진 것 같습니다.

덕분에 이것저것 많이 배우게 되었네요. 감사합니다!

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