Link
초보 개발자의 성장 일기
연속된 수의 합 본문
문제 설명
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
나의 문제 해결 방법
처음 시작할 값을 정하고 num의 길이만큼 1을 더하여 배열을 만든다. 첫 값은 total값을 num으로 나눈 후에 내림을 해주고 num값에 2를 나누고 내림한 값을 다시 빼주면 배열의 첫번째 값이 된다. num이 짝수일떄는 처음값에 1을 더한다.
function solution(num, total) {
let firstNum = Math.floor(total/num) - Math.floor(num/2);
let answer = [];
if (num%2 !== 0) {
for (let i = firstNum; answer.length <num; i++ ) {
answer.push(i)
}
} else {
for (let i = firstNum + 1; answer.length <num; i++ ) {
answer.push(i)
}
}
return answer;
}
다른 해결 방법
function solution(num, total) {
const a = (2 * total / num + 1 - num) / 2
return Array(num).fill().map((_, i) => i + a)
}
- total에 2를 곱하고 num으로 나눠서 1을 더하고 num을 빼고 2로 나누면 num이 짝수인지 홀수인지 관계없이 모두 적용 가능하다.
- num의 길이만큼 undefined된 새로운 배열을 생성하고 맵함수로 두개의 매개변수를 받고 언더스코어(_)는 현재 요소를 나타내며, i는 현재 인덱스를 나타낸다.
- 길이가 num이고 각 요소가 i + a로 계산된 값을 가지는 새로운 배열이 생성된다.
Array(num)
길이가 num인 새로운 배열을 생성한다.
fill(value, start, end)
원하는 범위를 변경하려는 값으로 전부 변경이 가능하다. 기본값은 undefined
const array1 = [1, 2, 3, 4];
console.log(array1.fill(0, 2, 4));
// Expected output: Array [1, 2, 0, 0]
'Development > Algorithm' 카테고리의 다른 글
약수의 개수와 덧셈 (0) | 2023.11.24 |
---|---|
가까운 수, 배열에서 가장 가까운 수 찾기 (0) | 2023.11.22 |
특이한 정렬, 매개변수와 가까운 순서대로 정렬 (0) | 2023.11.22 |
유한소수 판별하기 (0) | 2023.11.21 |
치킨 쿠폰 (0) | 2023.11.21 |