장바구니 금액 합계 구하기
자바스크립트 코딩테스트 문제로 array-reduction-methods 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
장바구니에 담긴 상품 가격 배열을 받아 모든 금액의 합계를 반환하세요.
오늘의 메서드
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 <= 10000 <= prices[i] <= 100000- 상품이 하나도 없으면
0을 반환합니다. - 반환값은 모든 가격의 합계입니다.
예시
- 입력:
prices = [1200, 3500, 800]-> 출력:5500 - 입력:
prices = []-> 출력:0 - 입력:
prices = [999]-> 출력:999 - 입력:
prices = [0, 1500, 0, 2500]-> 출력:4000
힌트
- 누적값
sum을0에서 시작하세요. - 배열의 각
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]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.