- 주어진 문제에 따르면, 가장 적은 수의 귤 종류를 제거해야 한다.
- 먼저 아래의 [코드 1]처럼 코드를 작성한다.
- nCr = (n−r)!n!인 점에 착안하여 조합을 구하는 메서드를 정의하였다.
- [코드 1] 처음 작성한 코드 답안
import java.util.*;
class Solution {
public int solution(int k, int[] tangerines) {
int answer = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for (int tangerine: tangerines) {
if (!map.containsKey(tangerine)) {
map.put(tangerine, 1);
} else {
map.replace(tangerine, map.get(tangerine) + 1);
}
}
int count = 0;
while (count < k) {
count += getMaxValue(map)[1];
map.remove(getMaxValue(map)[0]);
answer++;
}
return answer;
}
private int[] getMaxValue(HashMap<Integer, Integer> map) {
Iterator<Integer> keyIterator = map.keySet().iterator();
int maxValue = 0;
int newKey = 0;
while(keyIterator.hasNext()) {
Integer key = keyIterator.next();
Integer value = map.get(key);
if (maxValue < value) {
maxValue = value;
newKey = key;
}
}
return new int[] {newKey, maxValue};
}
}