[프로그래머스/Java] Lv.2 귤 고르기

이은정·2024년 10월 6일

프로그래머스/Java

목록 보기
51/74

문제

로직

먼저 tangerine 배열을 정렬한다. cnt라는 새로운 List를 만든 후에 동일한 크기를 가진 귤의 개수를 세서 List에 넣는다. List를 역순으로 정렬한다.
인덱스 0의 값부터 순서대로 k에서 뺀 후 answer에 1을 더한다. k가 0 또는 0보다 작아지면 answer를 return 한다.

코드

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        List<Integer> cnt = new ArrayList<>();
        
        Arrays.sort(tangerine);
        int idx = 0;
        cnt.add(1);
        
        for (int i = 1; i < tangerine.length; i ++)
        {
            if (tangerine[i] == tangerine[i-1]) {
                cnt.set(idx, cnt.get(idx)+1);
            }
            else {
                idx ++;
                cnt.add(1);
            }
        }        
        
        Collections.sort(cnt, Collections.reverseOrder());
        
        for (int size: cnt) {
            k -= size;
            answer ++;
            
            if (k <= 0) {
                return answer;
            }
        }
        
        return answer;
    }
}

결과

profile
돈 많은 백수가 꿈인 백엔드 개발자 지망생

0개의 댓글