문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
아이디어
- 전체 귤을 순회하면서, 각 크기의 귤이 몇 개씩 있는지를 확인한다.
- 같은 종류의 귤이 많을수록 앞쪽에 배치하는
rank
배열을 만든다. rank
배열을 순회하면서 귤을 더 이상 담을 수 없을 때까지 담으면서 결과를 카운트한다.
소스코드
function solution(k, tangerine) {
var answer = 0
// 1. 전체를 순회하면서, 각 숫자의 갯수를 카운트한다.
const count = {}
tangerine.forEach(t => {
if (count[t]) count[t] += 1
else count[t] = 1
})
// 2. 기록한 카운트 객체를 가지고, 같은 종류가 많을수록 앞서는 rank 배열을 만든다.
const rank = Object.entries(count)
rank.sort((a, b) => b[1] - a[1])
// 3. rank 배열을 순회하면서 귤을 더 이상 담을 수 없을 때까지 담으면서 결과를 카운트한다.
for (let i = 0; i < rank.length; i++) {
const [size, num] = rank[i]
answer++
k -= num
if (k <= 0) break
}
return answer
}