[프로그래머스 Level 2] 귤 고르기
1분 읽기
풀이 1: Map 기반
function solution(k, tangerine) {
const count = new Map();
tangerine.forEach(t => count.set(t, (count.get(t) || 0) + 1));
let answer = 0;
Array.from(count.keys())
.sort((a, b) => count.get(b) - count.get(a))
.some(size => {
answer++;
k -= count.get(size);
return k <= 0;
})
return answer;
}풀이 2: 배열 기반
function solution(k, tangerine) {
// ✅ 주의! 1 ≤ tangerine의 원소 ≤ 10,000,000
const max = 10000000;
const sizes = new Set(tangerine)
const countBySize = new Array(max).fill(0);
let answer = 0;
tangerine.forEach(t => countBySize[t-1]++);
countBySize.sort((a, b) => b - a)
.some(count => {
answer++;
k -= count;
return k <= 0;
});
return answer;
}Greedy10편 중 6번째
관련 글
4분 읽기
소수 구하기
소수 판별법과 소수를 구하는 알고리즘을 정리합니다.
1분 읽기
[프로그래머스 Level 2] 미로 탈출
프로그래머스 미로 탈출을 BFS로 풀이합니다.
1분 읽기
[프로그래머스 Level 2] 마법의 엘리베이터
프로그래머스 마법의 엘리베이터를 자리수 그리디로 풀이합니다.