Menu
Coddy logo textTech

키-값 쌍 삽입하기

Coddy Rust 여정의 논리와 흐름 섹션에 포함된 레슨. 66개 중 29번째.

이제 비어 있는 해시 맵이 있으므로, 여기에 데이터를 추가할 차례입니다. .insert() 메서드를 사용하여 해시 맵에 키-값 쌍을 삽입할 수 있습니다:

let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");

.insert() 메서드는 두 개의 매개변수인 키와 값을 받습니다. 이 예제에서는 국가 이름을 키로, 해당 국가의 수도인 cities를 값으로 저장합니다.

기억해야 할 중요한 동작이 있습니다. 해시 맵에 이미 존재하는 키를 삽입하면 새 값이 이전 값을 덮어씁니다:

capitals.insert("France", "Lyon");  // 이것은 "Paris"를 덮어씁니다

이 작업 후에는 "France"를 조회하면 "Paris" 대신 "Lyon"이 반환됩니다. 이러한 덮어쓰기 동작 덕분에 .insert()는 해시 맵에 새 항목을 추가하고 기존 항목을 업데이트하는 데 모두 유용합니다.

challenge icon

챌린지

쉬움

세 가지 입력을 받습니다. 제품 이름, 가격(십진수), 그리고 또 다른 제품 이름입니다. 제품 이름을 키(String 유형)로, 가격을 값(f64 유형)으로 저장할 수 있는 가변 해시 맵을 생성하세요. 첫 번째 제품과 해당 가격을 해시 맵에 삽입하세요. 그런 다음 두 번째 제품을 0.0의 가격으로 삽입하세요. 마지막으로 새 가격과 함께 다시 삽입하여 두 번째 제품의 가격을 15.99로 업데이트하세요. 아래에 표시된 정확한 형식으로 모든 정보를 출력하세요.

.clone()에 대한 참고: String 변수를 키로 HashMap에 삽입할 때 Rust의 소유권 규칙에 따라 해당 변수는 맵으로 이동되어 이후에는 더 이상 사용할 수 없습니다. 변수를 계속 사용하려면(예: 출력하거나 다시 삽입할 때), insert()에 전달할 때 변수에 .clone()을 호출하세요. 예: map.insert(name.clone(), price).

요구 사항:

  • std::collections에서 HashMap을 가져오기
  • HashMap<String, f64> 유형의 가변 해시 맵 생성
  • 첫 번째 입력을 첫 번째 제품 이름으로 읽기
  • 두 번째 입력을 읽고 첫 번째 제품의 가격을 위해 f64로 변환하기
  • 제품 이름에 .clone()을 사용하여 첫 번째 제품과 해당 가격을 해시 맵에 삽입하기
  • 세 번째 입력을 두 번째 제품 이름으로 읽기
  • 제품 이름에 .clone()을 사용하여 두 번째 제품을 0.0의 가격으로 삽입하기
  • .clone()을 사용하여 두 번째 제품을 15.99의 가격으로 다시 삽입하기(이렇게 하면 이전 값이 덮어써집니다)
  • 아래에 표시된 정확한 형식으로 두 제품의 정보를 출력하기

입력:

  • 첫 번째 줄: 첫 번째 제품 이름(예: Laptop)
  • 두 번째 줄: 십진수로 표시된 첫 번째 제품 가격(예: 999.99)
  • 세 번째 줄: 두 번째 제품 이름(예: Mouse)

출력:

  • 첫 번째 줄: Inserted [first_product] at $[price]
  • 두 번째 줄: Inserted [second_product] at $0.00
  • 세 번째 줄: Updated [second_product] to $15.99

직접 해보기

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

fn main() {
    // 입력 읽기
    let mut product1 = String::new();
    io::stdin().read_line(&mut product1).expect("Failed to read line");
    let product1 = product1.trim().to_string();
    
    let mut price1_input = String::new();
    io::stdin().read_line(&mut price1_input).expect("Failed to read line");
    let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
    
    let mut product2 = String::new();
    io::stdin().read_line(&mut product2).expect("Failed to read line");
    let product2 = product2.trim().to_string();
    
    // TODO: 아래에 코드를 작성하세요
    // 가변 HashMap을 생성하고, 제품을 삽입한 후, 필요한 출력을 출력하세요
    
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Rust 컴파일러