알고리즘/LeetCode

[LeetCode/easy/TwoPointer] Assign Cookies

녕이 2022. 9. 20. 15:39
728x90

 

https://leetcode.com/problems/assign-cookies/

 

Assign Cookies - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

멋진 부모라고 가정하고 아이들에게 쿠키를 나눠준다고 해보자. 그러나 자녀 당 꼭 하나만 줘야 한다.

각 자식(i)은 g [i]: 아이들이 만족할 쿠키의 최소 사이즈

각 쿠키(j)의 사이즈 s[j]

만약 쿠키 사이즈가 아이들의 g [i]보다 크다면, 자식 i에게 쿠키 j를 줄 수 있다. 

당신의 목표는 만족하는 아이의 숫자를 최대화하고 그 최댓값을 출력하는 것이다.

 

예를 들어,

g = [1,2,3], s = [1,1]

3명의 아이가 있고, 각 greedy는 1, 2, 3

그런데 쿠키는 2개가 있고 둘 다 크기가 1이다. 그러므로 여기서 만족할 수 있는 아이의 수는 1명뿐! (greedy 값이 1인 아이)

 

g = [1,2], s = [1,2,3]

2명의 아이가 있고, 각 greedy는 1, 2

쿠키는 3개가 있고 각 1, 2, 3의 크기를 가지고 있다. 그러면 여기서 만족할 수 있는 아이는 2명 (1, 2)

 

 


 

아이는 만족도보다 같거나 큰 쿠키를 먹으면 만족한다.

g를 가리키는 gin, s를 가리키는 sin

int findContentChildren(vector<int> g, vector<int> s) {
    sort(g.begin(), g.end());
    sort(s.begin(), s.end());
    
    int gin = 0, sin = 0, res = 0;
    while(gin < g.size() && sin < s.size()){
        if(g[gin] <= s[sin]){
            res++; gin++; sin++;
        }else {
            sin++;
        }
    }
    return res;
}

 

 

 

728x90