본문 바로가기
기초다지기/JS 코딩테스트

javaScript 연속된 정수의 합

by 김빵그 2024. 1. 9.

 

문제 

주어진 정수 개수와 합으로 연속된 수를 찾아 배열로 반환

풀이 

function solution(num, total) {
    var answer = [];
    var start = Math.floor(total / num) - Math.floor((num - 1) / 2);
    for (var i = start; i < start + num; i++) {
        answer.push(i);
    }
     return answer;
}
  • answer : 결과를 담을 빈 배열
  • start : 연속된 정수의 시작값 계산 
  • total을 Num으로 나누어 평균을 구한 후, num이 홀수일 경우엔 중간값을 빼서 시작값 결정 
  • for
    • 시작값부터 시작해 num 만큼 연속된 정수를 차례로 배열에 추가

 

 

다른 풀이

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;});
}
  • min / max : 연속된 정수의 합의 시작값과 끝값 계산 
  • 배열 생성 및 초기화 
    • 길이의 배열을 생성하고 0으로 초기화
  • map 
    • map함수를 사용하여 배열의 각 요소를 i + min으로 채운다
function solution(num, total) {
    const a = (2 * total / num + 1 - num) / 2
    return Array(num).fill().map((_, i) => i + a)
}