연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num
과 total
이 주어집니다. 연속된 수 num
개를 더한 값이 total
이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
1 ≤ num ≤ 100
0 ≤ total ≤ 1000
num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
function solution(num, total) {
let x = ((2*total/num)+1-num)/2
let answer=[];
for(let i = 0; i<num;i++){
answer.push(x+i)
}
return answer;
}
1번
function solution(num, total) {
var min = Math.ceil(total/num - Math.floor(num/2));
var max = Math.floor(total/num + Math.floor(num/2));
return new Array(max-min+1).fill(0).map((el,i)=>{return i+min;});
}
2번
function solution(num, total) {
const a = (2 * total / num + 1 - num) / 2
return Array(num).fill().map((_, i) => i + a)
}
3번
function solution(num, total) {
for (let i = -50; ;i++) {
if (i*num + (num*(num-1) / 2) === total) return new Array(num).fill(i).map((v, j) => v + j)
}
}
공차가 1인 등차수열이라는 관점으로 처음에 접근했다가 입출력 예시를 보니 그렇게 접근하는게 아니어서 헷갈렸다.
그리고 다른사람들의 풀이를 보니 다양한 풀이가 이렇게 많을 수 있구나. 하고 다시한번 알게된다.