Javascript - 연속된 수의 합

이율곡·2023년 7월 21일

Programmers

목록 보기
39/44
post-thumbnail

연속된 수의 합

문제

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

입출력 예

numtotalresult
312[3, 4, 5]
515[1, 2, 3, 4, 5]
414[2, 3, 4, 5]
55[-1, 0, 1, 2, 3]

접근방법

이 문제의 핵심은 연속된 숫자의 합이 어떻게 계산되는지를 이해하고, 이를 바탕으로 연속된 숫자를 찾아내는 것이다.

  1. 연속된 수의 합은
  • '첫 수 + 마지막 수 * 개수 / 2 = 총합' 공식을 사용
  1. 개수(num)와 총합(total)이 주어지므로, 이를 바탕으로 첫 수를 계산.
  2. 첫 수가 계산된 후에는 각 수를 오름차순으로 배열에 넣어 반환.

풀이

function solution(num, total) {
    const start = Math.ceil((2 * total / num - (num - 1)) / 2);
    let answer = [];

    for (let i = 0; i < num; i++) {
        answer.push(start + i);
    }

    return answer;
}

크게 보면 시작점과 배열 반복이다. 우선 연속된 숫자의 개수(num)과 그 숫자들의 총합(total)을 이용하여 첫 번째 숫자를 계산한다. 반올림을 하는 이유는 소숫점일 수도 있기 때문이다.

배열 반복은, for문을 이용하여 첫 숫자부터 시작하여 연속된 숫자를 계산하고 answer 배열에 추가한다. 이 for문은 num 개수만큼 반복하고 이를 반환하면 된다.


정리하기

이 문제는 연속된 숫자들의 합을 구하는 것과 이를 통해 특정 값을 만들어 내는 문제다. 이를 통해 문제 해결 능력과 수학적 사고력을 평가를 할 수 있었던 거 같다. 공식을 사용했던 부분을 통해서 공부가 될 수 있었고 이번에도 굉장히 보람찬 문제였던 거 같다.

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

0개의 댓글