간단하게 두개의 인덱스를 이용해서 최적의 해를 구하는 것이다.
보통 start, end = 0, 0 으로 둔 뒤 end의 값을 늘려간다.
그리고 필요시 start += 1을 해주면서 두 인덱스 값을 조절한다.
특정한 합을 찾는 연속 수열
n, m = map(int, input().split())
graph = list(map(int, input().split()))
for start in range(n):
while result < m and end < n:
result += graph[end]
end += 1
if result == m:
count += 1
result -= graph[start]
print(count)
해당 문제에서는 모든 부분수열의 경우의 수를 다 확인하면서 찾는 공간을 사용해야한다..
그래서 end 만 이동시키는 것 뿐만 아니라,
start 또한 앞으로 한 번씩 움직인다.
'programming language > Algorithm' 카테고리의 다른 글
| [백준] 11660 구간 합 구하기 5 python (0) | 2024.02.14 |
|---|---|
| [백준] 20922 겹치는 건 싫어 python (0) | 2024.02.07 |
| [이코테] 음료수 얼려먹기 python (0) | 2024.02.02 |
| [백준] 13549 숨바꼭질3 python (0) | 2024.02.02 |
| [백준] 17836 공주님을 구해라! python (0) | 2024.02.02 |