삽집하는 개발들/알고리즘

[74일차][Lv0][프로그래머스][누적합][120923]연속된 수의 합

악투 2023. 11. 12. 00:31
반응형

문제 설명

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.


제한 사항

1 ≤ num ≤ 100
0 ≤ total ≤ 1000
num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.

 

입출력

num total return
3 12 [3, 4, 5]
5 15 [1, 2, 3, 4, 5]
4 14 [2, 3, 4, 5]
5 5 [-1, 0, 1, 2, 3]

 

코드 및 설명

def solution(num, total):   
    check_arr = []    
    for idx in range(-num, total+num):
        check_arr.append(idx)
        if len(check_arr) == num:
            if sum(check_arr) == total:
                break
            else:
                check_arr.pop(0)
    
    return check_arr

 

이 문제는 누적합 문제로 num의 정수를 만큼을 합쳐서 나온 값이 total이여야한다. 먄약 num이 3이면 3개의 정수를 합쳐서 그 값이 total = 12가 되어야 하는 것이다. 그래서 range의 범위는 -num 부터 total+num까지 반복하면 되고, 여기서  len(check_arr) == num 은 num이 3개면 3개의 정수의 값을 합쳐야하므로 3개일때 sum이 total인지 확인하고 맞으면 break

아니면 맨앞 배열을 하나 뺴준다. 이게 반복되면 답을 구할 수 있다.

반응형