Rust - Vector의 최소, 최대 값 찾기 (min, max)

러스트에서 Vector의 요소들 중에 최소 값과 최대 값을 찾는 방법을 소개합니다.

1. min(), max()를 이용한 방법

iter()는 벡터의 iterator를 가져오며, min(), max()는 Iterator의 요소들 중에서 최소 값과 최대 값을 찾아서 Option 타입 객체로 리턴합니다.

Vector가 Empty인 경우, 최소 값과 최대 값이 없기 때문에 match를 사용하여 Option에 대한 예외처리가 필요합니다.

아래와 같이 match문을 사용하여 Option에 저장된 min, max 값을 가져올 수 있습니다.

fn main() {
    let vec = vec![4, 5, 9, 2, 8, 7, 3, 1, 6];
    let min = vec.iter().min();
    let max = vec.iter().max();
    match (min, max) {
        (Some(min_val), Some(max_val)) => println!("min: {}, max: {}", min_val, max_val),
        _ => println!("Array is empty"),
    }
}

Output:

min: 1, max: 9

2. fold()를 이용한 방법

fold()를 사용하여 벡터의 모든 요소들을 순회하면서, 최소 값과 최대 값을 계산하여 min_val, max_val에 저장하고 마지막에 min, max 변수로 리턴합니다.

fn main() {
    let vec = vec![4, 5, 9, 2, 8, 7, 3, 1, 6];
    let (min, max) = vec.iter().fold((vec[0], vec[0]), |(min_val, max_val), &val| (min_val.min(val), max_val.max(val)));
    println!("min: {}, max: {}", min, max);
}

Output:

min: 1, max: 9
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha