본문 바로가기

코딩 테스트/PROGRAMMERS

[Java] Lv.2 귤 고르기

문제

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

우선 귤을 크기별로 정렬한다.

이후 크기별로 갯수를 카운트하고 다시 갯수별로 정렬을 진행한다.

그러면 한 배열에 크기당 갯수 별로 정렬된다.

이후 가장 많은 갯수를 가진 귤부터 k개를 꺼낼 때까지 담아주면 종료

자바 코드

import java.util.Arrays;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        // 귤 크기별 정렬
        Arrays.sort(tangerine);
        int[] count = new int[tangerine[tangerine.length-1]];
        
        // 크기별 갯수 카운트
        for(int i = 0; i < tangerine.length; i++){
            count[tangerine[i] - 1] += 1;
        }
        
        // 갯수 별로 정렬
        Arrays.sort(count);
        
        // 가장 수가 많은 귤부터 진행
        for(int i = count.length - 1; i >= 0; i--){
            // 종류 하나 증가
            answer += 1;
            // 담으려는 귤 갯수 감소
            k -= count[i];
            
            // 귤을 다 담으면 종료
            if(k <= 0){
                break;
            }
            
        }
        
        return answer;
    }
}