반응형
문제
https://www.acmicpc.net/problem/1644
풀이
def primef():
limit = 4000000
is_prime = [True] * (limit + 1)
is_prime[0] = is_prime[1] = False
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 [i for i in range(limit + 1) if is_prime[i]]
n = int(input())
primelist = primef()
answer = 0
start, end, data = 0, 0, 0
while start < len(primelist):
if data == n:
answer += 1
data -= primelist[start]
start += 1
elif data < n:
if end < len(primelist):
data += primelist[end]
end += 1
else:
break
else:
data -= primelist[start]
start += 1
print(answer)
에라토스테네스의 체와 투포인터를 이용한 연속합 풀이입니다.
에라토스테네스의 체를 이용하여 소수 리스트를 만들고 시작점과 끝점을 0, 0부터 시작해서 전체 탐색을 합니다.
반응형
'Programming > 알고리즘' 카테고리의 다른 글
[백준/Python] 1005번 ACM Craft (0) | 2025.03.18 |
---|---|
[백준/Python] 1647번 도시 분활 계획 (0) | 2025.03.02 |
[백준/Python] 32986번 나는 건포도가 싫어요 (0) | 2025.01.18 |
[프로그래머즈/Python] 2022 블라인드 카카오 - 양궁대회 (0) | 2025.01.05 |
[백준/Python] 11758번 CCW (0) | 2025.01.02 |
댓글