풀이
시간제한이 무척 짧으므로 시간 복잡도가 O(N)인 투포인터 알고리즘을 사용하여 풀어야 한다.
# 부분 합
N, S = map(int, input().split(" "))
num = list(map(int,input().split(" ")))
start=0
end = 0
part_sum = num[0]
ans = 100001
cnt = 1
while start < N and end < N:
if S <= part_sum :
if ans > cnt :
ans = cnt
part_sum -= num[start]
cnt -= 1
start += 1
else :
end += 1
cnt += 1
if end < N:
part_sum += num[end]
if ans == 100001:
print(0)
else :
print(ans)
'백준' 카테고리의 다른 글
[백준 4485] 녹색 옷 입은 애가 젤다지? (python) (1) | 2023.04.20 |
---|---|
python 코테에 유용한 문법 정리 (0) | 2023.04.12 |
[백준 1987] 알파벳 (python) (0) | 2023.04.05 |
[백준 25757] 임스와 함께하는 미니게임 python(시간초과) (0) | 2023.01.04 |
[백준 13549] 숨바꼭질 3 (python) 우선순위 큐를 이용한 구현 (0) | 2023.01.02 |