Post

LeetCode 75-3 Kids With the Greatest Number of Candies

문제 요약

candies라는 array에는 candy의 갯수(integer type)가 들어있습니다.
candies[i]ith째 아이(kid)가 가지고 있는 candy의 갯수입니다.
extraCandies는 여러분이 가지고 있는 여분의 candy를 의미하며,
이를 각각의 아이에게’만’ 주었을 때, 각각의 아이가 가장 많은 수(Greatest number)의 candy를 갖게 되는지 일종의 시뮬레이션 결과를 반환하는 문제입니다.

문제 풀이

간단한 문제라 작성한 solution은 1개 입니다.

‘example1’로 예를 들어 설명하면,
Input: candies = [2,3,5,1,3], extraCandies = 3
Output: [true,true,true,false,true]

Input의 값을 고려하여 아래의 조건을 충족해야 합니다.

\[\text{candies}+3\geqq5 \rightarrow candies \geqq 2\]

즉, candies array에서, 각 요소(element)가 $candies \geqq 2$를 만족하는지 확인하면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
impl Solution {
    pub fn kids_with_candies(candies: Vec<i32>, extra_candies: i32) -> Vec<bool> {
        // let max_candy = candies.iter().max().unwrap();
        let threshold: i32 = candies.iter().max().unwrap() - extra_candies;

        let results: Vec<bool> = candies.iter().map(|&candy_count| {
            return candy_count >= threshold;
        }).collect();

        return results;
    }
}

기타 의견

$candies \geqq 2$를 확인할 때에, CPU의 SIMD를 활용하여 병렬처리할 수 있을듯 합니다.
rust에선 std::simd모듈로 ‘experimental API’로서 제공하고 있습니다.

References

Kids With the Greatest Number of Candies - LeetCode

This post is licensed under CC BY 4.0 by the author.