투포인터 - 1806번: 부분합

jisu_log·2025년 6월 21일

알고리즘 문제풀이

목록 보기
49/105
post-thumbnail


n, s = map(int, input().split())
nums = list(map(int, input().split()))


start = 0
end = 0
sum = 0
min_len = float("inf")
is_found = False

while True:
    if sum >= s:
        min_len = min(min_len, end - start)
        is_found = True
        sum -= nums[start]
        start += 1
        # print("start 뒤로", start, end)
    elif end == n:  # end가 끝 인덱스에 도달 시 종료
        break
    else:  # sum < s
        sum += nums[end]
        end += 1
        # print("end 뒤로 ", start, end)

if is_found:
    print(min_len)
else:
    print("0")

0개의 댓글