본문 바로가기
알고리즘/프로그래머스

(LEVEL 2)프로그래머스 - 귤 고르기 (JAVA)

by 꾸준함 2023. 3. 12.

문제


입출력 예


 

풀이.

1. tangerine의 길이만큼 돌며 숫자(크기 종류)에 해당하는 배열의 값을 플러스

2. 개수가 큰 값부터 차례대로 돌면서 k(귤의 개수)와 비교하며 만약 k보다 숫자가 같거나 크다면 break (  해당 크기로 k가 채워진다면 까지의 종류면 된다.) 만약 k보다 숫자가 작으면 그 개수만큼 k를 빼주고 answer(종류의 개수)를 더하기 해준다

 

 


코드

import java.util.*;
class Solution {
    public int solution(int k, int[] tangerine) {
        int [] num = new int[10000001];
        int answer = 1;
        for(int n : tangerine){
            num[n]++;
        }
        Arrays.sort(num);
        
        for(int i= 10000000;i>0;i--){
            if(num[i] >= k){
                break;
            }else{
                k-= num[i];
                answer++;
            }
        }
        return answer;
    }
}

- for문을 써서 시간이 좀 걸리는거 같은데 HashMap으로 풀면 더 빠를거 같다.