본문 바로가기

알고리즘/투포인터

파이썬 | 백준 | 2003 | 수들의 합 2

Solution

# 2003, 수들의 합 2
import sys

N, M = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))

start, end, sum, count = 0, 0, 0, 0
while True:
    if sum >= M:
        if sum == M:    # 합이 M이 되면 개수 1 증가
            count += 1
        sum -= arr[start]   # start 위치 1 증가
        start += 1
    else:
        if end == N:    # end가 N이 되면 탐색 종료
            break
        sum += arr[end]     # end 1 증가
        end += 1

print(count)

 

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

 

'알고리즘 > 투포인터' 카테고리의 다른 글

파이썬 | 백준 | 1806 | 부분합  (0) 2021.03.21
파이썬 | 백준 | 2473 | 세 용액  (0) 2021.02.21