[프로그래머스 코딩테스트 입문] 연속된 수의 합 | 알고리즘 설명 & 문제 풀이 with 자바스크립트(Javascript)

Re_Go·2023년 12월 28일
0

코딩테스트연습

목록 보기
48/106
post-thumbnail

1. 문제 설명

2. 제한사항

3. 입출력 예

4. 입출력 예 설명

5. 첫번째 문제 풀이(2023-12-28)

해당 문제의 경우 도오오오오오오오저히 제 머리로는 알기가 어렵고, 이게 0레벨의 문제가 맞나 싶기도 해서 구글링을 해봤는데 여기서 한 참고에 의하면, 중간값을 구한 후 그 중간값을 주어진 num으로 나눈 값으로 시작 수를 구할 수 있다고 하더군요.

참... 이 정도면 문제를 내는 분들은 대단하시다는 마음이 들었습니다.

아무튼 이번 문제의 경우 테스트 케이스 3(num = 4, total = 14)를 예를 들어 설명을 해보겠습니다.

function solution(num, total) {
    let result = []
    // 가운데 값
    const avg = Math.ceil(total / num) // 이 구간에서 가운데 값을 구할 때 14/4의 값인 3.5가 반환되는데, 이때 ceil 메서드에 의해 반올림이 되어 4가 중간값으로 반환됩니다.
    const x = Math.trunc(num / 2) // 그리고 x의 값은 시작 번호를 구할 값을 의미하는데, 검색을 해보니 x는 시작점이 중간값으로부터 떨어져 있는 정도를 의미한다고 합니다. 
    const startNum = avg - x  // 중간값(avg)에서 x(벌어져 있는 정도)를 빼면 시작점을 반환받을 수 있습니다.

    for(i=0; i<num; i++){ // 숫자 갯수만큼 for문을 돌리면서 result 배열에 startNum을 후순위로 증가시키며 result에 push 해줍니다.
        result.push(startNum++)
    }
    return result
}
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글