본문 바로가기
Rust

[example] Rust min, max (최소값, 최대값 구하기)

by 올리고당 2021. 6. 25.

목차


두 개의 값을 비교하기.

두 개의 값을 비교하는 방법으로는 두 가지 방법이 있는데요.

첫 번째로 cmp crates의 min, max 함수를 이용하는 방법입니다.

두 수를 비교해서, 큰 값, 작은 값을 반환해 줍니다.

 

 

Tuple과 Array도 비교 가능하지만, 아쉽게도 Floating point Type은 지원하지 않습니다.

 

 

 

두 번째로, 객체 내장 함수를 통해 비교하는 방식입니다.

객체 값 a와 입력값 b를 비교해 큰 값, 작은 값을 반환해 줍니다.

 

 

이 방법 역시 Tuple과 Array도 비교 가능합니다.

 

 


여러 개의 값들 중 최대 최소 구하기.

여러 개의 값들 중 최대 최소를 구하는 방법으로는 세 가지가 있습니다.

최대값을 구하려면, min 대신 max를 사용하시면 됩니다.

 

iter().min()

가장 기본적인 방법으로는 iter().min() 함수를 이용하는 것입니다.

 

 

iter.min_by()

Floating point Type 은 다른 방식을 사용해 주어야 합니다.

 

 

iter.min_by_key()

프로그래머가 직접 기준을 정하여 최소값을 구하는 방법입니다.

 

 

min_by_key() 함수 역시 Floating point Type 을 지원하지 않아 다른 방식을 사용해 주어야 합니다.

 

iter().fold()다른 글에서 좀 더 깊게 다뤄보겠습니다.

이 코드에서의 iter().fold()에 대해 간단히 설명하자면, 

x의 초기값으로 f64::INFINITY 를 설정하고, y의 값에 배열 a 원소 값을 각각 대입하며,

해당 함수를 실행하고 있습니다. 각각의 원소에 대한 함수 실행 결과값은 x에 저장되며 진행됩니다.

 

배열에 NaN이 포함되어 있는 경우

NaN을 무한대 값으로 가정하고 작성한 코드입니다.

 

※ x.partial_cmp(&y) -> Option<T> : None || Some(T)

※ Some(n) : n = Ordering::Greater || Ordering::Equal || Ordering::Less

 


참고 자료

 

https://stackoverflow.com/questions/28446632/how-do-i-get-the-minimum-or-maximum-value-of-an-iterator-containing-floating-poi

 

https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.min

 


오늘은 Rust에서 min, max를 구하는 예제를 살펴보았습니다.

여러분께도 도움되었으면 좋겠습니다.

읽어주셔서 감사합니다.