[알고리즘] 백준 1806 부분합 파이썬

June·2020년 12월 21일
0

알고리즘

목록 보기
2/260

문제

분류 : 투 포인터

코드

import sys

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

left, right = 0, 0
tmp_sum = 0
min_length = sys.maxsize

while True:
   if tmp_sum >= S:
       min_length = min(min_length, right - left)
       tmp_sum -= arr[left]
       left += 1

   elif right == N:
       break

   else:
       tmp_sum += arr[right]
       right += 1

if min_length == sys.maxsize:
   print(0)
else:
   print(min_length)

전형적인 투포인터 문제이다.

0개의 댓글