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 |