키-값 쌍 삽입하기
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()는 해시 맵에 새로운 항목을 추가하거나 기존 항목을 업데이트하는 데 모두 유용합니다.
챌린지
쉬움세 개의 입력을 받게 됩니다: 제품 이름, 가격(소수점 숫자), 그리고 또 다른 제품 이름입니다. 제품 이름을 키(타입 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을 생성하고, 제품을 삽입한 후, 필요한 출력을 출력합니다
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.