Menu
Coddy logo textTech

해시 맵 순회하기

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

때로는 특정 키를 조회하는 대신 해시 맵의 모든 키-값 쌍을 살펴봐야 합니다. Rust는 for 루프를 사용하여 모든 데이터를 순회하는 간단한 방법을 제공합니다.

for (key, value) in &my_map {
    println!("{}: {}", key, value);
}

my_map 앞의 &에 주목하세요. 이는 해시 맵에 대한 참조를 생성하므로 소유권을 가져오지 않고 반복할 수 있습니다. 이 루프는 각 키-값 쌍을 튜플로 제공하며, 루프 선언에서 직접 구조 분해할 수 있습니다.

가격 목록을 사용한 실용적인 예시는 다음과 같습니다:

let mut prices = HashMap::new();
prices.insert("apple", 1.20);
prices.insert("banana", 0.80);

for (item, price) in &prices {
    println!("{} costs ${:.2}", item, price);
}

기억해야 할 중요한 세부 사항이 하나 있습니다. 해시 맵은 특정한 반복 순서를 보장하지 않습니다. 프로그램을 실행할 때마다 pairs가 다른 순서로 나올 수 있습니다. 이는 해시 맵이 삽입 순서를 유지하는 것보다 빠른 조회를 우선하기 때문이므로, 반복할 때 item이 특정한 순서로 나타날 것이라고 기대하지 마세요.

challenge icon

챌린지

쉬움

처리할 student-score 쌍의 수를 나타내는 정수 n을 입력으로 받습니다. 그런 다음 n개의 입력 쌍을 받습니다. 각 쌍은 student name에 이어 test score(정수)로 구성됩니다. student names를 키로, scores를 값으로 저장할 hash map을 생성합니다. 모든 쌍을 삽입한 후 hash map을 순회하며 각 student's name과 score를 출력합니다.

요구 사항:

  • std::collections에서 HashMap을 가져옵니다
  • 유형이 HashMap<String, i32>인 mutable hash map을 생성합니다
  • 첫 번째 입력을 읽고 i32로 변환하여 쌍의 수를 얻습니다
  • loop를 사용하여 n개의 입력 쌍(student name, 그다음 score)을 읽습니다
  • 각 student name과 score를 hash map에 삽입합니다
  • for loop를 사용하여 &map으로 hash map을 순회합니다
  • 각 student's information을 [name]: [score] 형식으로 출력합니다
  • 쌍은 어떤 순서로든 출력할 수 있습니다(hash map은 순서를 보장하지 않음)

입력:

  • 첫 번째 줄: 정수 n(예: 3)
  • 다음 n개의 줄 쌍:
    • Student name(예: Alice)
    • 정수로 표현된 test score(예: 95)

출력:

  • 각 student에 대해 한 줄씩 [name]: [score] 형식으로 출력합니다
  • 출력 줄의 순서는 테스트 실행마다 달라질 수 있습니다

직접 해보기

use std::collections::HashMap;
use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // 학생-점수 쌍의 개수를 읽습니다
    let n: i32 = lines.next().unwrap().unwrap().trim().parse().unwrap();
    
    // 학생 이름과 점수를 저장할 가변 해시 맵을 생성합니다
    let mut students: HashMap<String, i32> = HashMap::new();
    
    // TODO: 아래에 코드를 작성하세요
    // n개의 입력 쌍(학생 이름과 점수)을 읽고 해시 맵에 삽입합니다
    
    
    
    // TODO: 해시 맵을 순회하며 각 학생의 이름과 점수를 출력합니다
    
}
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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