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