본문 바로가기

알고리즘

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

728x90
SMALL

⭐ 문제 설명

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


⭐ 제한 사항

- 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 입니다.

 

입출력 예 #4

- 설명 생략


⭐ 나의 코드

function solution(num, total) {
    let startNum = 0
    //초반 [0~num]의 배열을 생성
    let twoPointer = new Array(num). fill(0). map ((a,i)=> i).reduce((a,b)=>a+b,0)
    //배열이 total과 같아질 때까지 반복
    while(twoPointer !== total){
        // 현재 배열의 합이 total 보다 작다면 +1
        if(twoPointer <total){
            startNum++
            //크다면 -1
        }else{
            startNum--
        }
        //변경된 startNum에 따른 배열의 합 계산
        twoPointer = new Array(num).fill(0).map((a,i)=>i+startNum).reduce((a,b)=>a+b,0)
    }
    return new Array(num).fill(0).map((a,i)=> i+startNum)
}

 

 

728x90
LIST