def solution(sequence, k):
answer = []
start, end = 0,0
num = sequence[0]
min_len = 2147483647
while start <= end and end < len(sequence):
if num == k:
if min_len > end - start + 1:
min_len = end - start + 1
answer = [start, end]
num -= sequence[start]
start += 1
elif num > k:
num -= sequence[start]
start += 1
elif num < k:
end+=1
if end < len(sequence):
num += sequence[end]
return answer
- 이 문제의 핵심은 이미 더해줬던 부분을 계속해서 더하는 것이 아니고 양 끝값을 더하고 빼는 식으로 진행해서 시간 초과를 피해야 하는 문제이다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 카드 뭉치(파이썬) (0) | 2023.04.12 |
---|---|
프로그래머스 - 바탕화면 정리 (파이썬) (0) | 2023.04.12 |
[프로그래머스] - 달리기 경주 (파이썬/자바) (0) | 2023.04.10 |
[프로그래머스] - 성격 유형 검사하기 (1) | 2023.04.08 |
[프로그래머스] - 뒤에 있는 큰 수 찾기 (0) | 2023.04.04 |