문제

문제 링크
image

나의 풀이

아이디어

reduce 메서드를 이용하여 누산값이 n보다 작거나 같을 때만 원소를 더하고, 아닐 때는 더하지 않는다.

코드

function solution(numbers, n) {
    return numbers.reduce((total, v) => total + (total <= n ? v : 0), 0);
}

다른 사람 풀이

function solution(numbers, n) {
  let sum = 0;

    for(let i = 0; i<numbers.length; i++) {
      sum += numbers[i]
      if(sum > n) break;
    }
    return sum;
}

반복문을 이용한 풀이.
조건에 충족하면 바로 반복문을 마치기 때문에 reduce보다 좀더 효율적인 코드가 될 수 있어보인다.