Menu
Coddy logo textTech

키-값 쌍 삽입하기

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

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

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

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

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

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

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

challenge icon

챌린지

쉬움

세 개의 입력을 받게 됩니다: 제품 이름, 가격(소수점 숫자), 그리고 또 다른 제품 이름입니다. 제품 이름을 키(타입 String)로 하고 가격을 값(타입 f64)으로 저장하는 가변 해시 맵(mutable hash map)을 생성하세요. 첫 번째 제품과 그 가격을 해시 맵에 삽입합니다. 그런 다음 두 번째 제품을 0.0의 가격으로 삽입합니다. 마지막으로, 두 번째 제품을 새로운 가격으로 다시 삽입하여 가격을 15.99로 업데이트합니다. 아래에 표시된 정확한 형식으로 모든 정보를 출력하세요.

.clone()에 대한 참고 사항: String 변수를 HashMap의 키로 삽입할 때, Rust의 소유권 규칙에 따라 해당 변수는 맵으로 이동(moved)되어 이후에는 더 이상 사용할 수 없게 됩니다. 변수를 계속 사용하려면(예: 출력하거나 다시 삽입하기 위해), 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

치트 시트

해시 맵에 키-값 쌍을 삽입하려면 .insert() 메서드를 사용하세요:

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

.insert() 메서드는 키와 값이라는 두 개의 매개변수를 받습니다.

이미 존재하는 키를 삽입하면, 새로운 값이 기존 값을 덮어씁니다:

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

이러한 덮어쓰기 동작 덕분에 .insert()는 새로운 항목을 추가하거나 기존 항목을 업데이트하는 데 모두 유용합니다.

직접 해보기

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실력 점검

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

Logic & Flow의 모든 레슨