For Programmer

11.(2) 투 포인터 - 기타 알고리즘 본문

코팅테스트/코딩테스트 이론 정리

11.(2) 투 포인터 - 기타 알고리즘

유지광이 2021. 8. 25. 13:34
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
Comments