seunghyun Note

[프로그래머스] 귤 고르기 with JAVA 본문

코딩테스트/백준

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

승숭슝현 2024. 1. 4. 09:39
728x90
반응형

 

https://school.programmers.co.kr/learn/courses/30/lessons/138476

 

프로그래머스

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

programmers.co.kr

문제 설명


제한 사항 및 입출력 예제


개념 및 풀이

 HashMap<Integer, Integer> map은 과일의 개수를 추적하는 데 사용됩니다. 
 tangerine 배열을 반복하면서 각 과일의 개수를 map에 저장합니다.

그 후, map의 키 값을 리스트로 가져와서 과일 개수를 기준으로 내림차순으로 정렬합니다.

그리고 k 값이 0보다 큰 동안, 가장 많은 개수의 과일부터 순차적으로 k값을 해당 과일의 개수만큼 감소시키고, 선택된 과일 수인 answer를 1씩 증가시킵니다. 그리고 최종적으로 answer를 반환합니다.

import java.util.*;

class Solution {
	public int solution(int k, int[] tangerine) {
		int answer=0;
		HashMap<Integer, Integer> map = new HashMap<>();
		for (int i = 0; i < tangerine.length; i++) {
			map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) + 1);
		}

		List<Integer> keys = new ArrayList<>(map.keySet());
		keys.sort(((o1, o2) -> map.get(o2) - map.get(o1)));

		int i = 0;
		while (k > 0) {
			k -= map.get(keys.get(i));
			answer++;
			i++;
		}

		return answer;
	}
}
728x90
반응형