귤 고르기

Seongjin Jo·2023년 6월 30일
0

프로그래머스 LV2

목록 보기
13/28

문제

풀이

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {

        // 일단 종류별로 Map에 담는다.
        // k개수에 맞게 Map의 갯수가 적은 거 부터 지워준다?
        int answer = 0;
        Map<Integer,Integer> map = new HashMap<>();
        
        for(int x : tangerine){
            map.put(x,map.getOrDefault(x,0)+1);
        }
        
        // value 기준 내림차순으로 정리
        ArrayList<Integer> keys = new ArrayList<>(map.keySet());
        Collections.sort(keys, (v1,v2) -> (map.get(v2).compareTo(map.get(v1))));


        int sum=0;
        for(Integer key : keys){
            if(sum>=k) break;
            sum+=map.get(key);
            answer++;
        }
        
        return answer;
    }
}

문제 자체는 쉽다. Map에 담아서 문제에 맞게 풀어주면 된다. 근데 Map정렬하는 법을 알아야 풀수있는 문제이다. 이번 기회에 key,value 값 기준으로 정렬하는 방법을 알아두자.

map key값 기준 정렬 방법

// key 기준 오름차순 정리
ArrayList<인티저> keys = new ArrayList<>(map.keySet());
Collections.sort(keys);

// key 기준 내림차순 정리
ArrayList<인티저> keys = new ArrayList<>(map.keySet());
Collections.sort(keys,Collections.reverseOrder());

map value값 기준 정렬 방법

// value 기준 오름차순으로 정리
ArrayList<Integer> keys = new ArrayList<>(map.keySet());
Collections.sort(keys, (v1,v2) -> (map.get(v1).compareTo(map.get(v2))));

// value 기준 내림차순으로 정리
ArrayList<Integer> keys = new ArrayList<>(map.keySet());
Collections.sort(keys, (v1,v2) -> (map.get(v2).compareTo(map.get(v1))));

0개의 댓글