144. 부분합

아현·2021년 7월 7일
0

Algorithm

목록 보기
145/400
post-custom-banner

백준




1. Python


import sys
input = sys.stdin.readline

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

#먼저 0~n까지의 합을 구해줌
#m이 0일 수 있기에
#연속된 부분합이기에 정렬 불가!
slist = [0] * (n + 1)
for i in range(1, n + 1):
    slist[i] = slist[i-1] + array[i-1]  
    
#투포인터 설정
answer = 1000001
start = 0
end = 1

#알고리즘 실행
while start != n:
    if slist[end] - slist[start] >= m:
        if end - start< answer:
            answer = end - start
        start += 1
        
    else:
        if end != n:
            end += 1
        else:
            start += 1

#답이 없을 경우 & 있을 경우
if answer != 1000001:
    print(answer)
else:
    print(0)
profile
For the sake of someone who studies computer science
post-custom-banner

0개의 댓글