Algorithm 2022. 12. 20.

[Algorithm] 연속된 수의 합

 

 

출처

프로그래머스

 

사용 언어

Javascript

 

 

 

문제 설명

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

 

제한사항

  • 1 ≤ num ≤ 100
  • 0 ≤ total ≤ 1000
  • num개의 연속된 수를 더하여 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]

 

 

 

풀이

const solution = (num, total) => {
  let first =
    num % 2 === 0
      ? Math.floor(total / (num / 2 ) / 2) - num / 2 + 1
      : total / num - Math.floor(num / 2);

  return new Array(num).fill(0).map((_, idx) => first + idx);
};

 

먼저, num이 홀수인지 짝수인지에 따라 각기 다른 방법으로 연속된 숫자의 첫번째 수가 될 숫자를 찾아줍니다.

이후 num의 개수만큼 빈 배열을 만든 후, 해당 배열의 값들을 기존에 구한 첫번째 수를 기준으로 삼아 채워줍니다.

 

프로그래머스 문제 풀이 페이지에 보다 수학적으로 논리적인 답안들이 많으니,

기회가 되신다면 한번 참고 해 보셔도 좋을 것 같습니다 : )

 

'Algorithm' 카테고리의 다른 글

[Algorithm] 각도기  (0) 2022.12.20
[Algorithm] 배열 두 배 만들기  (0) 2022.12.20
[Algorithm] 두 수의 합  (0) 2022.12.19
[Algorithm] 양꼬치  (0) 2022.12.18
[Algorithm] 나머지 구하기  (0) 2022.12.18