느려도 한걸음씩

Lv.0 - 연속된 수의 합 본문

알고리즘/프로그래머스

Lv.0 - 연속된 수의 합

hoj0806 2024. 7. 4. 13:08

문제

풀이코드

const solution = (num, total) => {
    let arr = Array.from({ length : num}, (_, index) => index + total).sort((a, b) => a - b)
    return arr
    while(true) {
        if(arr.reduce((a, b) => a + b) === total) {
            break
        }
        arr.unshift(arr.pop() - num)
    }

    return arr
}

풀이

num의 개수만큼 그리고 total에서 시작해 1씩 늘어나도록 오름차순 배열을 만들어준다 ex) num3 , total이 12일경우 [12, 13, 14]
그리고 while 조건문을 통해 배열의 합과 total을 비교해서 같으면 조건문을 멈추고 다르다면 배열의 맨뒤값을 제거하고 맨뒤값 값에서 배열의 길이만큼을 뺸값을 배열의 가장앞에 더해준다 ex) [12, 13, 14] => [11, 12, 13] => [10, 9, 8] 배열의 길이만큼을 빼줘야 + 1씩 일정하게 요소가 늘어나게 된다 그렇게 조건문이 돌면서 자연스럽게 연속된 수의 합이 들어간 배열이 완성된다

'알고리즘 > 프로그래머스' 카테고리의 다른 글

Lv.1 - 삼총사  (0) 2024.07.04
Lv.1 - 두 개 뽑아서 더하기  (1) 2024.07.04
Lv.0 - 배열 조각하기  (0) 2024.07.04
Lv.0 - 정사각형으로 만들기  (0) 2024.07.03
Lv.0 - 외계어 사전  (0) 2024.07.03