특정 상품 주문 수량 합치기
자바스크립트 코딩테스트 문제로 string-parsing-accumulation 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
문제 설명
주문 기록 배열 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와 같을 때만 수량을 숫자로 바꿔 더하세요. - 처음
total을0으로 두면 빈 배열이나 매칭이 없는 경우도 자연스럽게 처리됩니다.
해설
이 문제는 문자열 파싱과 조건부 누적을 함께 다루는 구현 문제입니다.
각 기록은 "상품명:수량"처럼 하나의 문자열에 두 정보가 들어 있습니다. 따라서 먼저 콜론 기준으로 문자열을 나누어 상품명과 수량 문자열을 얻습니다.
예를 들어 "apple:3"은 상품명 "apple"과 수량 문자열 "3"으로 나눌 수 있습니다. 상품명이 targetProduct와 같다면 수량을 숫자로 변환해 total에 더합니다. 다르면 해당 기록은 건너뜁니다.
풀이 순서는 다음과 같습니다.
total을0으로 초기화합니다.records의 각 문자열을 순회합니다.- 현재 기록을
":"기준으로 나누어 상품명과 수량을 얻습니다. - 상품명이
targetProduct와 같으면 수량을 숫자로 바꿔total에 더합니다. - 순회가 끝나면
total을 반환합니다.
각 기록을 한 번씩만 확인하므로 시간 복잡도는 O(n)입니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.