본문 바로가기
코딩 테스트/프로그래머스

연속된 부분 수열의 합

by ornni 2024. 9. 13.
728x90
반응형

첫번째 코드

 

위도우를 통해 계산한다.

이때 시작 인덱스와 끝 인덱스, 그리고 sequence 길이 자체를 헷갈리지 말아야 한다.

 

비내림차순인데 수열이므로 오름차순일 것이고, 끝에서부터 계산하면 가장 짧은 수열을 구할 수 있다.

하지만 동일한 숫자가 반복되는 경우, 가장 앞에 있는 인덱스를 가져와야 하므로, 현재 숫자가 이전 숫자와 동일한 값인지 판단해야 한다.

 

def solution(sequence, k):
    answer = []
    num = 0
    end_index = len(sequence) - 1
    
    for start_index in range(len(sequence)-1, -1, -1):
        num += sequence[start_index]
        
        if num > k:
            num -= sequence.pop()
        
        if num == k:
            while sequence[start_index-1] == sequence[-1] and start_index > 0:
                start_index -= 1
                sequence.pop()
                
            return [start_index, len(sequence)-1]

 

통과!

도움을 받았지만, 한번 헷갈리면 영원히 맴맴 도는 문제이다.


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/178870.%E2%80%85%EC%97%B0%EC%86%8D%EB%90%9C%E2%80%85%EB%B6%80%EB%B6%84%E2%80%85%EC%88%98%EC%97%B4%EC%9D%98%E2%80%85%ED%95%A9

 

programmers/프로그래머스/2/178870. 연속된 부분 수열의 합 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

지폐 접기  (0) 2024.10.14
물 부족  (0) 2024.10.11
숫자 변환하기  (0) 2024.09.09
배열 만들기 2  (0) 2024.09.06
[1차] 비밀지도  (0) 2024.09.02