문제
주어진 정수 개수와 합으로 연속된 수를 찾아 배열로 반환
풀이
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)
}
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javaScript 2차원 배열 자르기 문제 (1) | 2024.01.11 |
---|---|
javaScript 분수 덧셈 (1) | 2024.01.10 |
javaScript 두 행렬 곱하기 (0) | 2024.01.08 |
javaScript H-index 찾기 (0) | 2024.01.05 |
javaScript 등차수열 및 등비수열의 다음 항 찾기 (1) | 2024.01.04 |