For Programmer
11.(2) 투 포인터 - 기타 알고리즘 본문
728x90
소스 코드
n = 5 #데이터의 개수 N#
m = 5 #찾고자 하는 부분합 M#
data = [1,2,3,2,5] #전체 수열
count = 0
interval_sum = 0
end = 0
#start를 차례대로 증가시키며 반복
for start in range(n):
# end를 가능한 만큼 이동시키기
while interval_sum < m and end < n:
interval_sum += data[end]
end += 1
#부분합이 m일때 카운트 증가
if interval_sum == m:
count += 1
interval_sum -= data[start] #위의 while내부의 조건때문에 반드시 interval >= m 상태로 while문을 빠져 나온다.
print(count) # 3출력
728x90
'코팅테스트 > 코딩테스트 이론 정리' 카테고리의 다른 글
11.(3) 구간 합 빠르게 구하기 - 기타 알고리즘 (0) | 2021.08.25 |
---|---|
11.(1) 소수 판별 알고리즘(에라토스테네스의 체) - 기타 알고리즘 (0) | 2021.08.25 |
10.(3) 위상 정렬 - 그래프 이론 (0) | 2021.08.25 |
10.(2) 크루스칼 알고리즘 - 그래프 이론 (0) | 2021.08.25 |
10.(1) 서로소 집합 자료구조(union-find) - 기타 그래프 이론 (0) | 2021.08.24 |
Comments