[프로그래머스] 연속된 수의 합.JS

ungnam·2023년 6월 8일

programmers level0

목록 보기
29/29

https://school.programmers.co.kr/learn/courses/30/lessons/120923

입출력 예시

numtotalresult
312[3, 4, 5]
515[1, 2, 3, 4, 5]
414[2, 3, 4, 5]
55[-1, 0, 1, 2, 3]

나의 풀이

function solution(num, total) {
    const median = Math.ceil(total / num);
    
    return Array(num).fill(median).map((v, i) => v - Math.floor(num / 2) + i);
}

참고할 만한 풀이

function solution(num, total) {
    const a = total / num - (num + 1) / 2;
    return Array(num).fill(a + 1).map((v, i) => v + i)
}

수열의 합 공식을 이용
(a+1) + (a+2) + ... + (a+num)
= (num*a) + num(num+1) / 2
= total

a에 대해 나타내면 a = total / num - (num + 1) / 2 가 된다.
[a+1, a+2, ..., a+num] -> 배열을 a+1로 채우고 map으로 돌면서 인덱스만큼 더해주면 끝

profile
꾸준함을 잃지 말자.

0개의 댓글