devFancy BE Developer

[Programmers] 138476. 귤 고르기

2023-03-08
devFancy

문제 링크

성능 요약

  • 메모리: 98.7 MB, 시간: 46.69 ms

구분

  • 코딩테스트 연습 > 구현

Answer Code1(2023.03.08)


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Collections;

class Solution {
    
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        Map<Integer, Integer> map = new HashMap<>();
        
        
        // 크기별로 몇 개 있는지 map에 저장함
        for (int tan : tangerine) {
            map.put(tan, map.getOrDefault(tan, 0)+1);
        }

        // 개수(value)가 많은 순으로 정렬
        List<Integer> list = new ArrayList<>(map.values());
        Collections.sort(list, Collections.reverseOrder());

        // 개수가 많은 순부터 사용
        for (Integer a : list) {
            if(k < 1) 
                return answer;
            k -= a;
            answer++;
        }

        return answer;
    }
}

문제 풀이 - Answer Code1

  • 귤의 크기(key)와 개수(value)를 Map에 저정한 다음, 개수가 많은 순부터 사용하여 k개를 채우면 되는 문제였다.

  • HashMap()의 getOrDefault(key, defaultValue)는 지정된 key의 값(객체)을 반환한다. key가 없으면 지정된 defaultValue로 지정된 객체를 반환한다.

Reference


Comments

Index