Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
Archives
- Today
- Total
기록
[programmers/python] 소수찾기 - 완전탐색, 에라토스테네스의 체 본문
프로그래머스 ‘소수 찾기’ 문제는 주어진 숫자 문자열로 만들 수 있는 모든 수를 조합해, 그중 소수의 개수를 구하는 완전탐색 문제다.
처음에는 하나하나 소수 판별을 직접 하는 방식으로 해결할 수 있지만, 더 효율적인 방법은 ‘에라토스테네스의 체’를 활용해 소수 정보를 미리 계산해두는 것이다.
1. 문제 핵심
- 문자열 numbers로 만들 수 있는 모든 숫자 조합을 생성
- 중복 없이 set에 담고, 그중 소수만 카운팅
- isPrime()을 수십 번 호출하지 않고, 소수 배열을 미리 캐싱하는 방식으로 개선
2. 에라토스테네스의 체
def make_sieve(limit):
is_prime = [False, False] + [True] * (limit - 1)
for i in range(2, int(limit ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, limit + 1, i):
is_prime[j] = False
return is_prime
- limit까지의 소수 여부를 미리 계산
- 이후엔 is_prime[n]만으로 소수인지 즉시 확인 가능 (O(1))
3. 최종 코드
from itertools import permutations
def make_sieve(limit):
is_prime = [False, False] + [True] * (limit - 1)
for i in range(2, int(limit ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, limit + 1, i):
is_prime[j] = False
return is_prime
def solution(numbers):
number_set = set()
for i in range(1, len(numbers) + 1):
for p in permutations(numbers, i):
number_set.add(int(''.join(p)))
sieve = make_sieve(max(number_set))
return sum(1 for n in number_set if sieve[n])
'코딩테스트 > python' 카테고리의 다른 글
[programmers/python] 카펫 - 완전탐색 (0) | 2025.05.22 |
---|---|
[programmers/python] 모의고사 - 완전탐색 (0) | 2025.05.21 |
[programmers/python] 최소직사각형 - 완전탐색 (0) | 2025.05.21 |
[programmers/python] 징검다리 - 이분 탐색으로 바위 사이 최소 거리의 최댓값 찾기 (0) | 2025.05.21 |
[programmers/python] 입국심사 문제 풀이 - 이분 탐색(Parametric Search) (0) | 2025.05.21 |
Comments