💡 Codeing Test/백준

백준 2003) 수들의 합2 (python)

밈98 2024. 3. 11. 12:17

https://www.acmicpc.net/problem/2003

 

2003번: 수들의 합 2

첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.

www.acmicpc.net

n, m = map(int, input().split())
a = list(map(int, input().split()))

sum = a[0]
left = 0
right = 1
cnt = 0

while True:
    if sum < m:
        if right < n:
            sum += a[right]
            right += 1
        else:
            break
    elif sum == m:
        cnt += 1
        sum -= a[left]
        left += 1
    else:
        sum -= a[left]
        left += 1

print(cnt)

 

sum -> 합을 기준으로 분기를 나눠서 풀었습니다