Menu
Coddy logo textTech

재고 확인하기

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

challenge icon

챌린지

쉬움

네 개의 입력을 받게 됩니다. 첫 번째 입력은 확인할 품목 이름입니다. 두 번째 입력은 인벤토리에 있는 품목 이름들의 쉼표로 구분된 리스트입니다. 세 번째 입력은 각 품목에 대응하는 가격들의 쉼표로 구분된 리스트입니다. 네 번째 입력은 각 품목에 대응하는 수량들의 쉼표로 구분된 리스트입니다. 품목 이름을 키(key)로 하고 가격과 수량을 포함하는 튜플 (f64, i32)을 값(value)으로 하는 인벤토리 데이터를 저장할 HashMap을 생성하세요. 그런 다음 .get()을 사용하여 요청된 품목이 인벤토리에 있는지 확인하고 적절한 재고 정보를 출력하세요.

요구 사항:

  • std::collections에서 HashMap을 임포트하세요.
  • 첫 번째 입력(확인할 품목 이름)을 읽고 공백을 제거(trim)하세요.
  • 두 번째 입력(쉼표로 구분된 품목 이름들)을 읽고 공백을 제거하세요.
  • 세 번째 입력(쉼표로 구분된 가격들)을 읽고 공백을 제거하세요.
  • 네 번째 입력(쉼표로 구분된 수량들)을 읽고 공백을 제거하세요.
  • 인벤토리를 위한 가변(mutable) HashMap<String, (f64, i32)>을 생성하세요.
  • 품목 이름들을 쉼표로 분리하세요.
  • 가격들을 쉼표로 분리하고 각각을 f64로 파싱하세요.
  • 수량들을 쉼표로 분리하고 각각을 i32로 파싱하세요.
  • 각 품목을 해당 가격 및 수량과 함께 튜플 형태로 인벤토리에 삽입하세요.
  • .get()을 사용하여 요청된 품목이 인벤토리에 존재하는지 확인하세요.
  • match 표현식을 사용하여 .get()이 반환한 Option을 처리하세요.
  • Some 암(arm)에서는 튜플에서 가격과 수량을 추출하여 다음을 출력하세요:
    • [item_name] is in stock
    • Price: $[price]
    • Quantity: [quantity]
  • None 암(arm)에서는 다음을 출력하세요: [item_name] is not in stock

입력:

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

출력:

  • 품목이 인벤토리에 존재하는 경우:
    • 첫 번째 줄: [item_name] is in stock
    • 두 번째 줄: Price: $[price]
    • 세 번째 줄: Quantity: [quantity]
  • 품목이 존재하지 않는 경우: [item_name] is not in stock

직접 해보기

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

fn main() {
    // 확인할 품목 이름을 읽습니다
    let mut item_to_check = String::new();
    io::stdin().read_line(&mut item_to_check).expect("Failed to read line");
    let item_to_check = item_to_check.trim();
    
    // 쉼표로 구분된 품목 이름들을 읽습니다
    let mut items_input = String::new();
    io::stdin().read_line(&mut items_input).expect("Failed to read line");
    let items_input = items_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을 생성합니다
    // 입력을 분리하고 HashMap을 채웁니다
    // .get()을 사용하여 품목이 존재하는지 확인합니다
    // match를 사용하여 Option을 처리하고 적절한 출력을 인쇄합니다
}

Logic & Flow의 모든 레슨