문제: https://school.programmers.co.kr/learn/courses/30/lessons/138476
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
Map<Integer, Integer> m = new HashMap<>();
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int i : tangerine){
// m 내에 해당 key가 존재하지 않을 경우
if(m.get(i) == null){
// System.out.println("새로운 값 삽입");
m.put(i, 1);
}else{
// System.out.println("기존 값 변경");
int v = m.get(i);
m.put(i,v+1);
}
}
// Map 순회하며 pq에 넣기
int answer = 0; // 카운트값
for(int num : m.values()){
pq.offer(num);
}
while(k > 0){
k -= pq.poll();
answer++;
}
return answer;
}
}
map을 순회하는 방법에서 많이 헤맸던것 같다
[HahsMap의 주요 메소드]
map을 순회하는 방법
Iterator 사용
Map<Integer, Integer> map = new HashMap<>();
Iterator<Integer> keys = map.keySet().iterator();
for(keys.hasNext()){
int key = keys.next();
map.get(key);
}
entrySet으로 접근하기
Map<Integer, Integer> map = new HashMap<>();
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
int key = entry.getKey();
int value = entry.getValue();
}
keySet을 이용해 접근하기
Map<Integer, Integer> map = new HashMap<>();
for(Integer i : map.keySet()){
map.get(i);
}
기억해 두자구잇~