예시 문제
n = 5 # 데이터 개수
m = 5 # 부분합, 찾고자 하는 값
data = [1, 2, 3, 4, 5] # 전체 수열
cnt = 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
if interval_sum == m:
cnt += 1
# 연속된 수열 합에서 앞에꺼 빼버림
# 뒤에꺼는 남아있는 거임
interval_sum -= data[start]
print(cnt)
- 특정 조건을 만족하는 연속 부분 수열을 찾는다.
s = 0, e = 0 출발
반복조건: e < n
같이 뒤로 간다.
- 특정 조건을 만족하는 두 개의 수를 찾는다.
s = 0, e = n - 1 출발
반복조건: s < e
서로에게 다가간다.