(Java)프로그래머스 - 귤 고르기

윤준혁·2024년 4월 4일

나의 풀이

import java.util.*;


class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        HashMap<Integer, Integer> map = new HashMap<>();

        for (int i : tangerine) { // 1
            map.put(i, map.getOrDefault(i, 0) + 1);
        }
        
        List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet()); // 2
        list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
        
        for (Map.Entry<Integer, Integer> entry : list) { // 3
            if (k <= 0) break; 
            answer++;
            k -= entry.getValue();
        }
        
        return answer;
    }
}

과정

  1. 주어진 int배열 tangerine을 map에 삽입
  2. list에 내림차순 정렬
  3. list를 순회하며 k가 0보다 작거나 같으면 break, 그 외엔 answer을 증가시키고, k에 list의 요소를 뺀다

다른 사람 풀이

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        HashMap<Integer,Integer> map =new HashMap<>();

        for (int t : tangerine) {
            map.put(t, map.getOrDefault(t, 0) + 1);
        }

        List<Integer> list = new ArrayList<>(map.keySet());
        list.sort((o1, o2) -> map.get(o2)-map.get(o1));

        for(Integer key:list){
            k -=map.get(key);
            answer++;
            if(k<=0){
                break;
            }
        }

        return answer;
    }
}

0개의 댓글