적립 한도를 적용한 포인트 합계

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

today easy clamp-sum 함수명: sumCappedRewardPoints 제한 시간: 200ms

주문별 예상 적립 포인트가 담긴 배열 points와 주문 1건당 최대 적립 한도 cap이 주어질 때, 실제로 적립되는 총 포인트를 반환하는 sumCappedRewardPoints 함수를 작성하세요.

각 주문은 cap을 넘겨 적립될 수 없습니다. 예를 들어 어떤 주문의 예상 포인트가 120이고 cap100이면, 그 주문에서는 100포인트만 적립됩니다.

제한사항

  • points의 길이는 0 이상 100,000 이하입니다.
  • points의 각 원소는 0 이상 1,000,000 이하의 정수입니다.
  • cap은 0 이상 1,000,000 이하의 정수입니다.
  • 각 주문에서 실제 적립되는 포인트는 points[i]cap 중 더 작은 값입니다.
  • 반환값은 모든 주문의 실제 적립 포인트 합계입니다.

예시

  • 입력: points = [120, 80, 200], cap = 100 → 출력: 280
  • 입력: points = [], cap = 50 → 출력: 0
  • 입력: points = [0, 30, 70], cap = 40 → 출력: 70

힌트

  • 주문마다 points[i]cap보다 큰지 확인해 보세요.
  • 실제 적립 포인트는 Math.min(points[i], cap)으로 구할 수 있습니다.

해설

이 문제는 배열을 한 번 순회하면서 각 주문에 상한선을 적용해 더하는 구현 문제입니다.

예를 들어 points = [120, 80, 200], cap = 100이면 실제 적립 포인트는 다음과 같습니다.

  • 첫 번째 주문: min(120, 100) = 100
  • 두 번째 주문: min(80, 100) = 80
  • 세 번째 주문: min(200, 100) = 100

따라서 총합은 100 + 80 + 100 = 280입니다.

배열이 비어 있으면 더할 주문이 없으므로 0을 반환합니다. cap0이면 모든 주문에서 적립 가능한 최대값이 0이므로 결과도 0입니다.

각 원소를 한 번씩만 보면 되기 때문에 시간 복잡도는 O(n)입니다.

코드 작성

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

JavaScript 에디터 로딩 중...

커스텀 테스트

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

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

실행 결과

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

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

댓글

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