-
[LeetCode | Python] 204. Count Primes개발/알고리즘 2025. 4. 21. 23:04
느낀점
오래전 프로그래머스에서 풀었던 "에라토스테네스의 체"를 다시 한번 보게 되었다.
문제
https://leetcode.com/problems/count-primes/
특정 숫자 직전까지의 소수 갯수 찾기
풀이
갯수 만큼 배열을 생성한 이후, 소수를 발견할 때마다 그의 배수들에 접근하지 못하도록 막는다. 또한, 바깥쪽 루프에서 가 소수일 때만 안쪽 루프가 실행되기 때문에 단순 소수 판별 알고리즘 보다는 빠르다.
class Solution: def countPrimes(self, n: int) -> int: if n < 2: return 0 h = [True] * n h[0], h[1] = False, False cnt = 0 for i in range(2, n): if h[i]: cnt += 1 for j in range(i*i, n, i): h[j] = False return cnt
결과
- 공간복잡도: $$ O(NLogLogN) $$
- 시간복잡도: $$ O(N) $$
'개발 > 알고리즘' 카테고리의 다른 글
[LeetCode | Python] 209. Minimum Size Subarray Sum (0) 2025.04.26 [LeetCode | Python] 162. Find Peak Element (0) 2025.04.22 [LeetCode | Python] 120. Triangle (0) 2025.04.08 [LeetCode | Python] 93. Restore IP Addresses (0) 2025.04.05 하루히 문제 (Haruhi Problem) (0) 2025.04.05