💡문제접근
- 누적 합 + 투 포인터의 개념을 이용하는 문제였다.
- 수열의 길이가 10 ≤ N < 100,000이라는 점을 활용해 길이가 N인 수열 이후 나머지 부분을 0으로 채워넣어
IndexError
가 나오는 것을 방지할 수 있었다.
💡코드(메모리 : 42340KB, 시간 : 116ms)
import sys
input = sys.stdin.readline
N, S = map(int, input().strip().split())
lst = list(map(int, input().strip().split())) + [0 for _ in range(100001)]
left = 0
right = 0
partsum = lst[0]
min_length = float('INF')
while right <= N:
if partsum >= S:
if min_length > right - left + 1:
min_length = right - left + 1
partsum -= lst[left]
left += 1
else:
right += 1
partsum += lst[right]
if min_length == float('INF'):
print(0)
else:
print(min_length)
💡소요시간 : 7m