오늘의 문제
easy난이도, greedy 문제
의식의 흐름
각 배열을 정렬시키고 해당 원소 값이 동일하면 나오지 않을까?
import java.util.Arrays;
class Solution {
public int findContentChildren(int[] g, int[] s) {
int smallArrSize = 0;
int count = 0;
int gSize = g.length;
int sSize = s.length;
Arrays.sort(g);
Arrays.sort(s);
smallArrSize = (sSize < gSize) ? sSize : gSize;
for(int i = 0; i < smallArrSize; i++)
{
if(g[i] == s[i]) count ++;
}
return count;
}
}
[1,2,3]
[3]
대소비교?
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int findContentChildren(int[] g, int[] s) {
int smallArrSize = 0;
int count = 0;
int gSize = g.length;
int sSize = s.length;
Arrays.sort(g);
Arrays.sort(s);
smallArrSize = (sSize < gSize) ? sSize : gSize;
for(int i = 0; i < smallArrSize; i++)
{
if(s[i] - g[i] >= 0) count++;
}
return count;
}
}
[10,9,8,7]
[5,6,7,8]
Arrays.asList()contains()를 쓰면 되겠지? -> false가 나온다 아마 Integer로 비교해야 할 것 같다.
// 아마 이런 비교가 아니었을까?
int i = 1;
int[] a= {i};
System.out.println(a.equals(i));
Returns a fixed-size list backed by the specified array.
(Changes tothe returned list "write through" to the array.)
This method actsas bridge between array-based and collection-based APIs, incombination with Collection.toArray().
The returned list isserializable and implements RandomAccess.
This method also provides a convenient way to create a fixed-sizelist initialized to contain several elements:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
contains
boolean contains(Object o)
Returns true if this list contains the specified element.More formally,
returns true if and only if this list containsat least one element e such that
(o==null ? e==null : o.equals(e)).
Specified by:contains in interface Collection<E>Parameters:o -
element whose presence in this list is to be testedReturns:true
if this list contains the specified elementThrows:ClassCastException -
if the type of the specified elementis incompatible with this list(optional)NullPointerException -
if the specified element is null and thislist does not permit null elements(optional)정확한 이유는 나중에 다시 알아보자.
import java.util.Arrays;
class Solution {
public int findContentChildren(int[] g, int[] s) {
// 정렬
Arrays.sort(g);
Arrays.sort(s);
int count = 0;
// 가장 작은 쿠키부터 아이들 욕심과 비교하여 분배
for(int sIdx = 0; count < g.length && sIdx < s.length; sIdx++)
{
if(g[count]<=s[sIdx]) count++;
}
return count;
}
}
메모리 상위권 코드
class Solution {
public int findContentChildren(int[] g, int[] s) {
int res = 0;
ArrayList<Integer> cookies = new ArrayList<>();
for (int i = 0; i < s.length; i++) {
cookies.add(new Integer(s[i]));
}
Collections.sort(cookies);
for(int i=0;i<g.length;i++){
if(cookies.isEmpty()){
return res;
}
if(eatCookie(g[i],cookies)){
res++;
}
}
return res;
}
public boolean eatCookie(int g, List<Integer> cookies) {
boolean res = false;
for(int i=0;i<cookies.size();i++){
if(cookies.get(i).intValue() >= g){
cookies.remove(i);
return true;
}
}
return res;
}
}
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
'Algorithm > LeetCode' 카테고리의 다른 글
| [LeetCode] Divisor Game (0) | 2021.03.08 |
|---|---|
| [LeetCode] Fibonacci number (피보나치 수열) (0) | 2021.03.06 |
| [LeetCode] Sort Colors (0) | 2021.03.05 |
| [LeetCode] Make The String Great (0) | 2021.03.04 |
| [LeetCode] Palindrome Number (대칭수) (0) | 2021.03.02 |