[프로그래머스] 연속된 수의 합 - JavaScript

문제 출처

Lv.0 연속된 수의 합 - JavaScript

문제 설명

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

제한 조건
  • 1 ≤ num ≤ 100
  • 0 ≤ total ≤ 1000
  • num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
예시

입출력 예

num total return
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]
풀이
function solution(num, total) {
  // 초기 값을 구하는 과정
  // total / num 으로 연속 되는 숫자의 중간 값을 구한다.
  // 구한 중간 값에서 num / 2의 내림을 해서 구한 자릿수 값을 빼고
  // 그 값을 올림으로 해서 초기 값을 구한다.

  // ex) num = 4 / total = 14
  // total / num = 3.5
  // num / 2 = 2
  // 3.5 - 2 = 1.5를 올림 처리해서 초기 값은 2
  const min = Math.ceil(total / num - Math.floor(num / 2));

  // Array.from() 메서드를 이용해 구해둔 초기값 부터
  // num의 길이 만큼 해서 답을 구한다.
  return Array.from({ length: num }, (_, i) => i + min);
}

console.log(solution(3, 12)); // [3, 4, 5]
console.log(solution(5, 15)); // [1, 2, 3, 4, 5]
console.log(solution(4, 14)); // [2, 3, 4, 5]
console.log(solution(5, 5)); // [-1, 0, 1, 2, 3]
정리

사용된 메서드와 문법에 대해 더 공부하고 싶으신 분은 링크를 클릭해주세요!

Math.ceil() 메서드 - MDN
Math.floor() 메서드 - MDN
Array.from() 메서드 - MDN

피드백은 언제나 환영입니다. 😊