
์ฐ์๋ ์ธ ๊ฐ์ ์ ์๋ฅผ ๋ํด 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)
}