알고리즘/프로그래머스
프로그래머스-연속된 수의 합
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