[java] 프로그래머스 - 귤 고르기

세상을 바꾸는 개발자·2023년 4월 27일
0

[문제링크 - 프로그래머스 - 귤 고르기] https://school.programmers.co.kr/learn/courses/30/lessons/138476

💡 list.sort() 와 Collections.sort()의 차이
https://velog.io/@heeyeon3050/java-list.sort-%EC%99%80-Collections.sortlist

  • 각각의 귤 크기에 대해 갯수를 추가해야한다.
    - 배열 -> 가장큰 귤의 크기만큼 배열을 만들다보니 메모리가 많이 낭비
    - list -> 귤의 크기에 대해 순서대로 값이 들어가서 원하는 크기를 다시 불러오기가 어렵다.
    - 크기에 대해서 갯수를 추가할 수 있는 HashMap이 젤 적합하다고 생각
  • HashMap으로 크기에 대한 귤의 갯수를 적용
  • 귤의 갯수에 대해 내림차순으로 정렬
  • 큰 값을 먼저 꺼내오면서 귤의 종류의 수를 최소화 시킴
import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;

        Map<Integer, Integer> map = new HashMap<>();

        for(int i=0; i<tangerine.length; i++){
            map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) +1);
        }

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

        int i=0;
        while(k>0){
            k -= map.get(list.get(i));
            answer++;
            i++;
        }

        return answer;
    }
}
profile
초심 잃지 않기

0개의 댓글

관련 채용 정보