알고리즘 문제 풀이

[백준 - Python] 1806. 부분합

김혠 2024. 8. 9. 11:39

문제링크

 

최종코드(코드링크)

import sys
input = sys.stdin.readline

N, S = map(int, input().split())
array = list(map(int, input().split()))

sum, len = 0, 1e9
left, right = 0, 0
while True:
    if sum >= S:
        len = min(len, right - left)
        sum -= array[left]
        left += 1
    elif right == N:
        break
    else:
        sum += array[right]
        right += 1

if len == 1e9: print(0)
else: print(len)

Two Pointers 방법으로 가능한 모든 경우의 수를 고려하되 가장 짧은 길이를 출력