https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=javascript
function solution(k, tangerine) {
let result = 0;
let tmp = {};
for(let num of tangerine){
if(num in tmp){
tmp[num] += 1;
} else {
tmp[num] = 1;
}
}
let tmpSort = Object.values(tmp).sort((a, b) => b - a);
console.log(tmpSort);
let count = 0;
for(let i = 0; i < tmpSort.length; i++){
if(count < k){
count += tmpSort[i];
result++;
}
if(count === k){
break;
}
}
return result;
}
우선 tmp 객체를 선언해 각 숫자별 갯수를 넣어줍니다.
각 숫자의 갯수를 구한 후, Object.values를 통해 값만 뽑아냅니다. 값을 뽑아내면서 sort((a, b) => b - a)를 통해 내림차순으로 정렬합니다. k값만큼 귤을 줄때 최대갯수에서 우선적으로 빼줘야 최소값을 구할 수 있습니다. k값과 비교할 count를 선언하고, count가 k보다 작다면 tmpSort[i]를 더해주고, result++을 통해 최소값을 추가합니다. 주의 사항으로 if(count === k) 상황에서 break를 해줘야 합니다. 미작성 시 if(count < k)에서 count가 한방에 k 이상으로 넘어가는 경우가 발생할 수 있습니다.