테스트 케이스마다 에라토스테네스 체를 새로 만들 필요가 없습니다.
그리고 보통 에라토스테네스의 체는 "루트 n 이하의 소수를 모두 저장해놨다가 하나씩 나눠보는 방식"이 아니라
"n이하의 모든 값에 대해서 소수인지 아닌지 미리 저장해두는 방식"입니다.
아래처럼 구현해두면 k가 소수인지 아닌지 isPrime[k]로 알 수 있습니다.
9020번 - 골드바흐의 추측
fccva님 답변 감사합니다.
에라토스테네스의 체를 그저 원리만 이해하고 접근하다 보니 복잡한 코드가 된 것 같네요.
배열이나 배열에 대한 메소드도 새롭게 알게 되었습니다.
fccva님의 메소드를 활용하여 BufferedReader와 BufferedWriter도 써가며 풀어봤는데 아직 시간 초과가 뜨네요. 골드바흐 파티션을 구하는 부분에 대해서 시간이 오래 걸리는 문제가 발생하는 것 같은데 조건이 길면 실행 시간에도 큰 영향이 있는 건가요?
골드바흐 파티션을 구하는 코드는 fccva님이 작성하신 메소드를 기반으로 다음과 같이 작성하였습니다.
확인과 힌트 감사합니다.
for문 한 개로 파티션을 구했더니 확실히 처리가 빨라진 것 같습니다.
덕분에 이것저것 많이 배우게 되었네요. 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
ineedwildturkey101 2년 전
실행시켰을 때는 케이스를 여러 개 해도 출력이 빠르게 나오는데 왜 제출에서는 시간 초과가 뜨는지 잘 모르겠습니다. 어느 부분이 잘못된 걸까요?