[백준 1806] 부분합

Junyoung Park·2022년 3월 20일
0

코딩테스트

목록 보기
296/631
post-thumbnail

1. 문제 설명

부분합

2. 문제 분석

투 포인터를 통해 조건을 충족한 길이의 최솟값을 얻는다.

3. 나의 풀이

import sys

n, s = map(int, sys.stdin.readline().rstrip().split())
numbers = list(map(int, sys.stdin.readline().rstrip().split()))
left, right = 0, 0
sum, length = 0, sys.maxsize

while right < n:
    added = numbers[right]
    if sum + added < s:
        sum += added
        right += 1
    else:
        length = min(length, right - left + 1)
        sum -= numbers[left]
        left += 1

if length == sys.maxsize: print(0)
else: print(length)
profile
JUST DO IT

0개의 댓글