일반적인 탐색은 시간 초과가 난다. 다른 방법이 필요하다.
def solution(sequence, k):
answer = []
# k가 배열 안에 있다면 바로 리턴하여 종료
if k in sequence:
return [sequence.index(k), sequence.index(k)]
sumN = 0
start, end = 0, 0
minIndex = 1e9
while len(sequence) != end:
# 뒤쪽 포인터를 이동하며 누적합
sumN += sequence[end]
end += 1
if sumN > k:
while sumN > k:
sumN -= sequence[start]
# 앞쪽 포인터 이동
start += 1
if sumN == k:
# 가장 작은 인덱스 저장
if minIndex > (end - start - 1):
minIndex = (end - start - 1)
# 뒤쪽 포인터는 이미 움직였기 때문에 1을 빼줘야 한다.
answer = [start, end - 1]
return answer