Programmers

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

winter17 2023. 7. 21. 11:07

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(num, total) {
    // 중앙값을 구하고 : 연속된 정수들의 합은 평균값이니까
    const mid = Math.floor(total / num)
    // 중앙값과 배열의 길이를 가지고 for문의 범위를 구하여 배열을 완성하기
    var answer = [];
    for (let i = Math.round(mid - (num - 1) / 2); i < Math.floor(mid + (num + 2) / 2); i++){
        answer.push(i)
    }
    return answer;
}

반복문 범위를 찾아내는 부분은 수학적 개념이 필요한 부분이라 모른다면 어려운 문제인데

Math.round(중앙값 - (배열의 길이 - 1) / 2) ~ Math.floor(중앙값 + (배열의 길이 + 1) / 2를 하면 원하는 범위의 값을 얻을 수 있다.

위의 과정이 이해가지 않으면 손으로 과정을 그려보기!


리뷰

이런 수학적 지식이 필요한 문제들이 너무 어렵다..!!