car584   1년 전

소수를 구하는부분에서는 시간초과가 아닌것같은데 뒤의연산부분에서 시간초과가 나는것이겠죠? 다른방법이 또 있을까 궁금합니다.

logicdrive   1년 전

21~22번째 줄을 보시면, n/2까지 가능한 소수를 전부 순환하고 있습니다.

이부분을 다음과 같은 사실을 고려하여 시간을 단축시킬 수 있습니다.

1. n에 대한 두 소수의 합을 구하는 문제이기 때문에, 하나의 수를 구했을 경우, 나머지 수는 자연스럽게 n-(구해진수)로 고정시킬 수 있습니다. => O(n^2) > O(n)으로 시간복잡도 감소

2. 두 소수의 합이기 때문에 소수인 것만 따로 리스트에 저장해서 순환시킬 수 있습니다. => O(n) => O(n이하의 소수의 개수)로 시간복잡도 감소

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