[프로그래머스] 귤 고르기(Java, 자바)

giggle·2023년 8월 14일
0

문제

귤 고르기


📌 아이디어

해당 문제는 HashMap을 활용해 문제를 해결했습니다.

1. 주어진 배열의 정수를 HashMap의 key값으로 하여 정수의 개수를 저장합니다.
2. 개수로 저장된 value를 ArrayList로 변환해 내림차순으로 정렬합니다.
3. 탐색을 진행하며 귤의 개수가 K 미만이라면 현재 사용한 특정 크기의 귤을 카운트합니다.
4. 탐색을 진행하며 귤의 개수가 K 이상이라면 탐색을 종료하고 카운트한 값을 정답처리합니다.


📌 코드

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int sum = 0; // 고를 귤의 개수
        int cnt = 0; // 최솟값 카운트
        
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int num : tangerine) {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        ArrayList<Integer> valueList = new ArrayList<>(map.values());
        Collections.sort(valueList, Collections.reverseOrder());
        for (int v : valueList) {
            if (sum + v >= k) {
                cnt++;
                break;
            } else {
                sum += v;
                cnt++;
            }
        }
        return cnt;
    }
}

✏️ TIP

1 .getOrDefault를 활용하여 값이 없으면 0, 있으면 + 1을 진행하여 HashMap에 저장합니다.
2. hashMap.values()를 활용해 HashMap의 value값만 도출합니다.
3. Collections.sort(valueList, Collections.reverseOrder())에서 Collections.reverseOrder()를 활용해 내림차순 정렬을 진행합니다.


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.

0개의 댓글