특정 상품 주문 수량 합치기

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

today easy string-parsing-accumulation 함수명: sumTargetProductQuantities 제한 시간: 200ms

문제 설명

주문 기록 배열 records와 찾고 싶은 상품명 targetProduct가 주어집니다.

각 주문 기록은 "상품명:수량" 형식의 문자열입니다. targetProduct와 상품명이 같은 기록들의 수량을 모두 더해 반환하는 sumTargetProductQuantities 함수를 작성하세요.

제한사항

  • records는 문자열 배열입니다.
  • 0 <= records.length <= 100000
  • 각 기록은 항상 "상품명:수량" 형식입니다.
  • 상품명은 빈 문자열이 아니며 콜론(:)을 포함하지 않습니다.
  • 수량은 0 이상 10000 이하의 정수 문자열입니다.
  • targetProduct는 빈 문자열이 아닙니다.
  • 목표 상품이 없으면 0을 반환합니다.

예시

  • 입력: records = ["apple:3", "banana:2", "apple:5"], targetProduct = "apple" -> 출력: 8
  • 입력: records = ["pen:1", "note:4", "bag:2"], targetProduct = "eraser" -> 출력: 0
  • 입력: records = [], targetProduct = "milk" -> 출력: 0
  • 입력: records = ["milk:0", "milk:7", "bread:3"], targetProduct = "milk" -> 출력: 7

힌트

  • 각 기록을 콜론(:) 기준으로 나누면 상품명과 수량을 분리할 수 있습니다.
  • 상품명이 targetProduct와 같을 때만 수량을 숫자로 바꿔 더하세요.
  • 처음 total0으로 두면 빈 배열이나 매칭이 없는 경우도 자연스럽게 처리됩니다.

해설

이 문제는 문자열 파싱과 조건부 누적을 함께 다루는 구현 문제입니다.

각 기록은 "상품명:수량"처럼 하나의 문자열에 두 정보가 들어 있습니다. 따라서 먼저 콜론 기준으로 문자열을 나누어 상품명과 수량 문자열을 얻습니다.

예를 들어 "apple:3"은 상품명 "apple"과 수량 문자열 "3"으로 나눌 수 있습니다. 상품명이 targetProduct와 같다면 수량을 숫자로 변환해 total에 더합니다. 다르면 해당 기록은 건너뜁니다.

풀이 순서는 다음과 같습니다.

  1. total0으로 초기화합니다.
  2. records의 각 문자열을 순회합니다.
  3. 현재 기록을 ":" 기준으로 나누어 상품명과 수량을 얻습니다.
  4. 상품명이 targetProduct와 같으면 수량을 숫자로 바꿔 total에 더합니다.
  5. 순회가 끝나면 total을 반환합니다.

각 기록을 한 번씩만 확인하므로 시간 복잡도는 O(n)입니다.

코드 작성

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

JavaScript 에디터 로딩 중...

커스텀 테스트

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

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

실행 결과

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

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

댓글

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