๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
p1๋ฒ์งธ ์์ด๋ g[p1] ์ด์ ํฌ๊ธฐ์ ์ฟ ํค๋ฅผ ๋ฐ์์ผ ํ๊ณ , p2๋ฒ์งธ ์ฟ ํค์ ์ฌ์ด์ฆ๋ s[p2]์
๋๋ค.
์ด๋, g[p1]<=s[p2]์ผ ๋, ํด๋น p1๋ฒ์งธ ์์ด์๊ฒ ์ฟ ํค๋ฅผ ๋๋ ์ค ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ๊ฐ์ฅ ๋ง์ ์์ด๋ค์๊ฒ ์ฟ ํค๋ฅผ ๋๋ ์ฃผ๋ ๊ฒ์ ๋๋ค.
์ ๊ฐ ํผ ํ์ด ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋จผ์ ์
๋ ฅ๋ฐ์ ๋ ๋ฒกํฐ g, s๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ์ ์์ํฉ๋๋ค.
p1, p2 ์ ๋ ํฌ์ธํฐ๋ฅผ ์ค์ ํ์๊ณ , ์์์ธ๋ฑ์ค๋ 0์ด๋ฏ๋ก ๋ ํฌ์ธํฐ ๋ชจ๋ 0๋ถํฐ ์์ํฉ๋๋ค.
์ฟ ํค๋ฅผ ๋ฐ์ ์์ด์ ์๋ ๋ณ์ res๋ก ๊ณ์ฐํ์ต๋๋ค.
g[p1]<=s[p2]์ธ ๊ฒฝ์ฐ์๋ง ์์ด์๊ฒ ์ฟ ํค๋ฅผ ๋๋ ์ค ์ ์๋ ๊ฒฝ์ฐ์ด๊ณ , -> p1++; p2++; res++;
์ด ์ธ์๋ ์ฟ ํค๋ฅผ ๋๋ ์ค ์ ์์ต๋๋ค. -> p2++; (p2๋ง ํ ์นธ ์ด๋์ํค๊ธฐ)
- g[p1]<=s[p2] : ์ฟ ํค ๋๋ ์ค ์ ์๋ ๊ฒฝ์ฐ
- g[p1]>s[p2] : ์ฟ ํค
๋๋ ์ค ์ ์๋ ๊ฒฝ์ฐ
์ ์ฒด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end()); sort(s.begin(), s.end());
int p1=0, p2=0, res=0;
while(p1<g.size() && p2<s.size()){
if(g[p1]<=s[p2]){
p1++; p2++; res++;
}
else{
p2++;
}
}
return res;
}
};