장바구니


스토리

동네 가게를 위한 장바구니를 모델링하려고 해요. 장바구니는 담긴 상품 목록을 계속 추적하고, 가격을 올바르게 계산해야 해요.

상품은 SKU(재고 관리 코드)를 사용해 장바구니에 담아요. 가게에 있는 상품은 다음과 같아요:

이름 가격 SKU
Potatoes 10.00 STAPOT
Rice 30.00 STARIC
Coffee 14.99 STACOF
Newspaper 2.99 MEDNEW

작업

장바구니에서는 다음 작업을 수행할 수 있어야 해요:

  • 장바구니에 상품 추가: SKU를 읽고 장바구니에 담아요.
  • 총 금액 확인: 장바구니에 담긴 상품의 총 가격을 소수점 두 자리까지의 숫자로 나타내요(예: 3.99).
  • 장바구니에 담긴 상품 확인: 장바구니에 있는 상품 이름 목록을 알파벳순으로, 중복 없이, 쉼표와 공백으로 구분해 나타내요.

용어

  • 상품(Item): 장바구니에 담을 수 있는 물품.
  • SKU: 상품 유형의 대문자 첫 세 글자 + 상품 이름의 대문자 첫 세 글자로 이루어진 식별자예요.
  • 가격: 소수점 두 자리까지의 숫자로 나타낸 상품의 값.

구현

대안 버전

스토리의 대안 버전 또는 확장판에서는 장바구니에 담을 수 있는 할인 쿠폰을 사용해요.

스토리

고객을 만족시키기 위해 동네 가게가 할인 쿠폰을 도입했어요. 즉, 이런 할인을 지원하려면 우리 장바구니가 현재 담긴 상품에 할인 쿠폰을 읽고 적용할 수 있어야 해요. 지원하는 쿠폰은 다음과 같아요:

유형 SKU 규칙
고정 금액 할인 FIX_TEN 장바구니 총 금액에서 10.00을 할인해요
상품 할인 HALF_STAPOT 모든 STAPOT 상품을 반값으로 낮춰요

작업

장바구니에 SKU를 받아 장바구니에 담는 새로운 scan coupon 작업이 있어야 해요. total_amount는 음수가 될 수 없고, total_amount의 최솟값은 0이라는 점을 기억해 두세요.

용어

  • 쿠폰: 장바구니에 적용할 수 있는 할인. 쿠폰은 고유하며 한 번만 적용할 수 있어요. 쿠폰 유형이 고정 금액 할인이라면, SKU의 두 번째 부분이 대문자로 표기한 할인 금액이에요.

구현