Post

Programmers. Continue num

연속된 부분 수열의 합

  • practice problem
  • 정답률: 49%
  • 2023.07.25
  • 16:00 ~ 17:00 (60 min)
  • 후기: 초반 sequence를 오름차순으로 고려하여 문제를 푸니 시간초과 문제를 겪고, 내림차순으로 문제를 해결함. idx마다 값을 저장하는 것이 아닌 순차적으로 오버되는 수를 제거하는 식으로 문제를 해결.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def solution(sequence, k):
    answer = []
    summ = 0
    last_index = len(sequence)-1
    
    for i, v in enumerate(sequence[::-1]):
        summ += v
        
        if summ < k:
            pass
        
        elif summ > k:
            summ -= sequence[last_index]
            last_index -= 1
            
            if summ == k:
                answer.append([len(sequence)-1-i, last_index])

        else:
            answer.append([len(sequence)-1-i, last_index])
    
    answer.sort(key=lambda x : (x[1]-x[0], x[0]))
    
    return answer[0]
This post is licensed under CC BY 4.0 by the author.