Algorithm

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

dearbeany 2023. 11. 24. 23:16

 

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0; // 크기 다른 서로 다른 종류 수
        Arrays.sort(tangerine);
        int length = tangerine[tangerine.length-1]+1;
        int[] arr = new int[length]; // 각각 귤 몇개인지 
        // i크기의 귤은 arr[i]개수만큼 있다 
        
        for(int i = 0; i < tangerine.length; i++){
            for(int j = 1; j < arr.length; j++){
                if(j == tangerine[i]){
                    arr[j]++;
                }
            }
        }
        
        Arrays.sort(arr); // 오름차순으로 정렬
        for(int i = arr.length-1; i >= 0; i--){
            if(k <= 0) break;
            k -= arr[i];
            answer++;

        }
        
//        System.out.println(Arrays.toString(arr));
        
        return answer;
    }
    /*
    public static void main(String[] args){
        Solution sol = new Solution();
        int[] tangerine = {1, 3, 2, 5, 4, 5, 2, 3};
        int answer = sol.solution(6, tangerine);
        
    }
    */
}
정확성: 76.5
합계: 76.5 / 100.0
시간초과,,,,,,,,,

 

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0; // 크기 다른 종류의 수
        Arrays.sort(tangerine);
        int cnt = 0;
//        System.out.println(Arrays.toString(tangerine));
        
        ArrayList<Integer> list = new ArrayList<>(); // 귤 몇 개 담겨있는지
        
        for (int i = 0; i < tangerine.length; i++) {
            cnt++;
            
            if ((i < tangerine.length - 1 && tangerine[i] != tangerine[i+1])
                || (i == tangerine.length - 1 && cnt > 0)) {
                
                list.add(cnt);
                cnt = 0;
            }
        }
//       System.out.println(list);
        
        Collections.sort(list, Collections.reverseOrder());
        
        for (int i : list) {
            answer++;
            k -= i;
            
            if (k <= 0) {
                break;
            }
        }
        
        return answer;
    }
    
}