장바구니 금액 합계 구하기

자바스크립트 코딩테스트 문제로 array-reduction-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

js-basic easy array-reduction-methods 함수명: sumCartPrices 제한 시간: 200ms

장바구니에 담긴 상품 가격 배열을 받아 모든 금액의 합계를 반환하세요.

오늘의 메서드

  • Array.reduce()

메서드 설명

reduce()는 배열의 값을 왼쪽부터 하나씩 보면서 누적값을 만들어 가는 메서드입니다.

합계, 곱, 최댓값, 객체 만들기처럼 여러 값을 하나의 결과로 모을 때 자주 사용합니다.

기본 문법

array.reduce((accumulator, currentValue) => {
  return nextAccumulator;
}, initialValue)
  • accumulator: 지금까지 누적된 값
  • currentValue: 현재 확인 중인 배열 요소
  • initialValue: 누적을 시작할 초기값

사용 예시

[1000, 2000, 500].reduce((sum, price) => {
  return sum + price;
}, 0);
// 3500

화살표 함수가 한 줄이면 더 짧게 쓸 수도 있습니다.

[1000, 2000, 500].reduce((sum, price) => sum + price, 0);
// 3500

주의할 점

  • reduce()는 원본 배열을 바꾸지 않습니다.
  • 빈 배열에서 초기값 없이 reduce()를 호출하면 에러가 납니다.
  • 합계를 구할 때는 보통 초기값으로 0을 넣습니다.
  • 콜백 함수에서 다음 누적값을 반드시 return해야 합니다.

제한사항

  • prices는 숫자로 이루어진 배열입니다.
  • 0 <= prices.length <= 1000
  • 0 <= prices[i] <= 100000
  • 상품이 하나도 없으면 0을 반환합니다.
  • 반환값은 모든 가격의 합계입니다.

예시

  • 입력: prices = [1200, 3500, 800] -> 출력: 5500
  • 입력: prices = [] -> 출력: 0
  • 입력: prices = [999] -> 출력: 999
  • 입력: prices = [0, 1500, 0, 2500] -> 출력: 4000

힌트

  • 누적값 sum0에서 시작하세요.
  • 배열의 각 price를 볼 때마다 sum + price를 다음 누적값으로 반환하면 됩니다.

해설

이 문제는 배열 안의 숫자를 모두 더하는 기본 합계 문제입니다.

반복문으로 직접 더할 수도 있지만, 오늘은 reduce()를 사용해 “여러 값을 하나의 값으로 줄이는” 흐름을 연습합니다.

function sumCartPrices(prices) {
  return prices.reduce((sum, price) => sum + price, 0);
}

초기값 0을 넣었기 때문에 첫 번째 상품 가격을 보기 전의 합계는 0입니다. 그다음 각 가격을 차례대로 더해 마지막 누적값을 반환합니다.

특히 prices가 빈 배열이어도 초기값 0이 그대로 결과가 되므로, 별도의 예외 처리 없이 0을 반환할 수 있습니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.