https://www.acmicpc.net/problem/2003
left, right를 설정해놓고 진행해나가는데 right는 left와 같거나 커야한다.
left가 증가할 경우의 예외처리를 처음에 못했는데 left가 right보다 커지면 right를 left와 같게 해줘서 그 인덱스부터 시작할 수 있도록 해준다. (처음 시작하는 것 처럼)
N, M = map(int, input().split())
A = list(map(int, input().split()))
left, right, hap, count = 0, 0, A[0], 0
while right < N and left <= right:
if hap == M:
count += 1
right += 1
if right < N:
hap += A[right]
elif hap > M:
hap -= A[left]
left += 1
if left > right and left < N:
right = left
hap = A[left]
elif hap < M:
right += 1
if right < N:
hap += A[right]
print(count)
'알고리즘 > 백준 (Pyhthon)' 카테고리의 다른 글
[알고리즘] 백준 1644 소수의 연속합 / pyhton (0) | 2020.07.20 |
---|---|
[알고리즘] 백준 1806 부분합 / python (0) | 2020.07.20 |
[알고리즘] 백준 2580 스도쿠 / pyhton, 백트랙킹 (0) | 2020.07.14 |
[알고리즘] 백준 9663 N-Queen / python, 백트랙킹 (0) | 2020.07.09 |
[알고리즘] 백준 1248 맞춰봐 / python, 백트랙킹 (0) | 2020.07.01 |