[BOJ] 1806 : 부분합

김가영·2021년 3월 4일
0

Algorithm

목록 보기
68/78
post-thumbnail

BOJ 1806 부분합 골드 4

import sys
from collections import deque
input = sys.stdin.readline

narr, target = list(map(int, input().split()))
arr = list(map(int, input().split()))

i = 0
a = arr[i]
j = i
answer = 0
while a < target and j + 1 < narr:
    j += 1
    a += arr[j]
answer = j - i + 1

if a < target:
    print(0) # 합을 만드는 것이 불가능
else:
    while i + 1 < narr:
        a -= arr[i]
        i += 1
        if j < i:
            j = i
            a += arr[j]
        while a - arr[j] > target and j > i :
            j -= 1
            a -= arr[j]
        while a < target and j + 1 < narr:
            j += 1
            a += arr[j]
        if a < target:
            break
        answer = min(answer, j - i + 1)
    print(answer)

완전탐색이나 파라메트릭 서치를 이용하려고 했을 때 시간초과가 났다.
** 런타임 오류도 났다. 항상 리스트 index 를 이용할 땐 index 범위 체크 해줘야 할 것 .

profile
개발블로그

0개의 댓글