오늘은 여기까지

[프로그래머스] 귤 고르기 (해시 Lv.2) - 자바 Java 본문

Problem Solving

[프로그래머스] 귤 고르기 (해시 Lv.2) - 자바 Java

dev-99 2024. 7. 1. 15:50

https://school.programmers.co.kr/learn/courses/30/lessons/138476

입력 받은 귤의 크기와 개수를 저장하고, 개수를 기준으로 내림차순 정렬한다.

최대한 크기의 종류가 적도록 선택하는 것이므로 개수가 많은 크기의 귤부터 모두 선택한다.

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int tan : tangerine) {
            map.put(tan, map.getOrDefault(tan, 0) + 1);
        }
        List<Integer> list = new ArrayList<>();
        for(int key : map.keySet()) {
            // System.out.println("key: " + key + ", value: " + map.get(key));
            list.add(map.get(key));
        }
        Collections.sort(list, Comparator.reverseOrder());
        for(int i=0; i<list.size(); i++) {
            k -= list.get(i);
            if(k<=0) {
                answer = i+1;
                break;
            }
        }
        return answer;
    }
}

 

  • `Array.sort()`는 원시형(primitive) 타입을 정렬할 때 사용한다.
  • 리스트, 큐, 맵 등 데이터가 여러 개인 객체를 정렬할 때 `Collections.sort()`를 사용한다.
  • `Collections.sort(list, Comparator.reverseOrder());` 는 리스트를 내림차순 정렬을 위해 사용했다.

 

Collections.sort() 와 Comparator에 대한 자세한 내용은 따로 공부해야겠다...