백준 알고리즘(Java)
1929번) 소수 구하기
thiago6
2018. 9. 28. 00:15
문제가 너무 쉽다 했습니다.
앞서와 같이 해결할 경우, 이중 for문의 경우의 수가 기하급수적으로 증가해 시간 초과가 나게 됩니다.
'에라토스테네스의 체'에 대한사전 지식이 필요한데,,
숫자 하나하나에 대해 1~해당 숫자까지 모두 나누어보는 것이 아니라
말 그대로 체로 거르듯이 소수가 아닌 수들을 빼 줍니다.
따라서 2의 배수, 3의 배수, ..... 을 제거해줌으로써 경우의 수를 기하급수적으로 줄여줄 수 있습니다.
저는 위 이론을 직관적으로 적용해
해당 범위만큼 배열을 만들어 모든 수들을 소수라고 가정한 후,
각 배수들을 체로 걸러주었습니다.