본문 바로가기
코딩테스트/프로그래머스

[연습문제] 귤 고르기 - JAVA

by 의정부핵꿀밤 2022. 12. 22.
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Map에 귤 크기 별로 개수를 저장한다

그리고 이를 value 기준으로 정렬하는데, Comparator 인터페이스를 통해 오버라이딩해서 정렬 기준을 value로 잡는다

Map의 keySet을 불러서 Comparator로 정렬하고, 큰 값부터 빼가면서 k개가 되면 return 한다

 

Comparator 사용법만 알면 어렵지 않게 구현할 수 있었던 문제였다! (물론 난 몰랐음^^;)

 

 

 

자바 코드)

import java.util.*;

class Solution {
    static Map<Integer, Integer> map = new HashMap<>();
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        for(int t : tangerine) {
            map.put(t, map.getOrDefault(t, 0) + 1);
        }

        List<Integer> keys = new ArrayList<>(map.keySet());
        Collections.sort(keys, new comparator());
        
        for(int key : keys) {
            if(k <= 0) {
                break;
            }
            answer++;
            k -= map.get(key);
        }
        
        return answer;
    }
    
    public class comparator implements Comparator<Integer> {
        @Override
        public int compare(Integer o1, Integer o2) {
            return map.get(o2).compareTo(map.get(o1));
        }
    }
}
728x90

댓글