문제풀이/프로그래머스

[프로그래머스] - 연속된 부분 수열의 합

얄루몬 2023. 4. 11. 14:10
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
  • 이 문제의 핵심은 이미 더해줬던 부분을 계속해서 더하는 것이 아니고 양 끝값을 더하고 빼는 식으로 진행해서 시간 초과를 피해야 하는 문제이다.