귤 종류를 최소화하려면 개수가 많은 귤부터 채워넣으면 된다. 각 종류별 개수 형태로 데이터를 분류하면 된다.
tcnt ⇒ 객체에 귤의 개수 정보를 저장한다.
val ⇒ 귤 개수를 배열로 만들고, 내림차순 정렬한다. val에는 귤 개수가 가장 많은 종류부터 배치된다.
for문을 순회하면서 k값에서 빼주고 k<=0 되는 시점에 break 해준다.
function solution(k, tangerine) {
const tcnt = {};
for(let i=0; i<tangerine.length; i++) {
if (tcnt[tangerine[i]]) tcnt[tangerine[i]]++;
else tcnt[tangerine[i]]=1;
}
let val = Object.values(tcnt).sort((a,b) => b-a);
let i;
for (i=0; i<val.length; i++) {
k = k - val[i];
if (k<=0) break;
}
return i+1;
}
console.log(solution(6, [1, 3, 2, 5, 4, 5, 2, 3]));
function solution(k, tangerine) {
let answer = 0;
const tDict = {};
tangerine.forEach((t) => tDict[t] = (tDict[t] || 0) + 1);
const tArr = Object.values(tDict).sort((a, b) => b - a);
for (const t of tArr) {
answer++;
if (k > t) k -= t;
else break;
}
return answer;
}