알고리즘/프로그래머스

프로그래머스-연속된 수의 합

nyeongha 2024. 1. 1. 23:16

문제 설명

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


제한사항

1 ≤ num ≤ 100

0 ≤ total ≤ 1000

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


입출력 예

num total result
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]

입출력 예 설명

입출력 예 #1

num = 3, total = 12인 경우 [3, 4, 5] return합니다.

 

입출력 예 #2

num = 5, total = 15인 경우 [1, 2, 3, 4, 5] return합니다.

 

입출력 예 #3

4개의 연속된 수를 더해 14가 되는 경우는 2, 3, 4, 5입니다.


나의코드

def solution(num, total):
    answer = []
    n=total//num	//total값을 num값으로 나누어 평균값의 정수형을 구하고
    minus=num//2	//num을 2로 나누어 앞뒤로 몇개의 숫자가 있는지 구한다.
    if num%2:	//연속된수가 홀수갯수이면
        for i in range(n-minus,n-minus+num):	//평균값-앞뒤 갯수에서 연속된 수 num개를 구한다.
            answer.append(i)
    else:
        for i in range(n-minus,n-minus+num+1):	//연속된수가 짝수개이면 일단 홀수갯수로 리스트를 채우고(연속된 수 num+1)
            answer.append(i)
        answer.remove(sum(answer)-total)	//리스트의 합에서 total값을 빼준값을 리스트에서 삭제한다.
    return answer