Menu
Coddy logo textTech

아이템 판매하기

Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 52번째.

challenge icon

챌린지

쉬움

다섯 개의 입력을 받게 됩니다. 첫 번째 입력은 판매할 품목의 이름입니다. 두 번째 입력은 판매할 수량입니다. 세 번째 입력은 인벤토리에 있는 품목 이름들의 쉼표로 구분된 리스트입니다. 네 번째 입력은 각 품목에 대응하는 가격들의 쉼표로 구분된 리스트입니다. 다섯 번째 입력은 각 품목에 대응하는 수량들의 쉼표로 구분된 리스트입니다. 키는 품목 이름이고 값은 가격과 수량을 포함하는 튜플 (f64, i32)인 인벤토리 데이터를 저장하기 위한 HashMap을 생성하세요. 그런 다음 요청된 수량만큼의 품목 판매를 시도하세요.

요구 사항:

  • std::collections에서 HashMap을 임포트하세요.
  • 첫 번째 입력(판매할 품목 이름)을 읽고 공백을 제거하세요.
  • 두 번째 입력(판매할 수량)을 읽고 공백을 제거하세요.
  • 판매할 수량을 i32로 파싱하세요.
  • 세 번째 입력(쉼표로 구분된 품목 이름들)을 읽고 공백을 제거하세요.
  • 네 번째 입력(쉼표로 구분된 가격들)을 읽고 공백을 제거하세요.
  • 다섯 번째 입력(쉼표로 구분된 수량들)을 읽고 공백을 제거하세요.
  • 인벤토리를 위한 가변 HashMap<String, (f64, i32)>를 생성하세요.
  • 품목 이름들을 쉼표를 기준으로 분리하세요.
  • 가격들을 쉼표를 기준으로 분리하고 각각을 f64로 파싱하세요.
  • 수량들을 쉼표를 기준으로 분리하고 각각을 i32로 파싱하세요.
  • 각 품목을 해당 가격 및 수량과 함께 튜플 형태로 인벤토리에 삽입하세요.
  • .get()을 사용하여 요청된 품목이 인벤토리에 존재하는지 확인하세요.
  • match 표현식을 사용하여 .get()이 반환한 Option을 처리하세요.
  • Some 암(arm)의 경우:
    • 튜플에서 가격과 현재 수량을 추출하세요.
    • 현재 수량이 판매할 수량보다 크거나 같은지 확인하세요.
    • 만약 그렇다면:
      • 현재 수량에서 판매할 수량을 빼서 새로운 수량을 계산하세요.
      • 품목 가격에 판매할 수량을 곱하여 총 가격을 계산하세요.
      • .insert()를 사용하여 새로운 수량으로 인벤토리를 업데이트하세요.
      • 출력: Sold [quantity_to_sell] [item_name]
      • 출력: Total: $[total_price]
      • 출력: Remaining stock: [new_quantity]
    • 만약 그렇지 않다면 (재고 부족):
      • 출력: Insufficient stock for [item_name]
      • 출력: Available: [current_quantity]
  • None 암(arm)의 경우, 출력: [item_name] is not in stock

입력:

  • 첫 번째 줄: 판매할 품목 이름 (예: Mouse)
  • 두 번째 줄: 판매할 수량 (예: 10)
  • 세 번째 줄: 쉼표로 구분된 품목 이름들 (예: Laptop,Mouse,Keyboard)
  • 네 번째 줄: 쉼표로 구분된 가격들 (예: 999.99,25.50,75.00)
  • 다섯 번째 줄: 쉼표로 구분된 수량들 (예: 15,50,30)

출력:

  • 품목이 존재하고 재고가 충분한 경우:
    • 첫 번째 줄: Sold [quantity_to_sell] [item_name]
    • 두 번째 줄: Total: $[total_price]
    • 세 번째 줄: Remaining stock: [new_quantity]
  • 품목이 존재하지만 재고가 부족한 경우:
    • 첫 번째 줄: Insufficient stock for [item_name]
    • 두 번째 줄: Available: [current_quantity]
  • 품목이 존재하지 않는 경우: [item_name] is not in stock

직접 해보기

use std::collections::HashMap;
use std::io;

fn main() {
    // 입력 읽기
    let mut item_to_sell = String::new();
    io::stdin().read_line(&mut item_to_sell).expect("Failed to read line");
    let item_to_sell = item_to_sell.trim();
    
    let mut quantity_to_sell_input = String::new();
    io::stdin().read_line(&mut quantity_to_sell_input).expect("Failed to read line");
    let quantity_to_sell: i32 = quantity_to_sell_input.trim().parse().expect("Invalid number");
    
    let mut item_names_input = String::new();
    io::stdin().read_line(&mut item_names_input).expect("Failed to read line");
    let item_names_input = item_names_input.trim();
    
    let mut prices_input = String::new();
    io::stdin().read_line(&mut prices_input).expect("Failed to read line");
    let prices_input = prices_input.trim();
    
    let mut quantities_input = String::new();
    io::stdin().read_line(&mut quantities_input).expect("Failed to read line");
    let quantities_input = quantities_input.trim();
    
    // TODO: 아래에 코드를 작성하세요
    // 재고를 저장할 HashMap 생성
    // 입력을 처리하고 재고 구축
    // 품목이 존재하는지 확인하고 판매 처리
    
}

Logic & Flow의 모든 레슨