
์ฐ์๋ ์ธ ๊ฐ์ ์ ์๋ฅผ ๋ํด 12๊ฐ ๋๋ ๊ฒฝ์ฐ๋ 3, 4, 5์
๋๋ค. ๋ ์ ์ num๊ณผ total์ด ์ฃผ์ด์ง๋๋ค. ์ฐ์๋ ์ num๊ฐ๋ฅผ ๋ํ ๊ฐ์ด total์ด ๋  ๋, ์ ์ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ด์ returnํ๋๋ก solutionํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
num โค 100total โค 1000num๊ฐ์ ์ฐ์๋ ์๋ฅผ ๋ํ์ฌ 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
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)
}