프로그래머스 - 귤 고르기

박철현·2023년 11월 27일

프로그래머스

목록 보기
64/80

프로그래머스 - 귤 고르기

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class Solution {
	public int solution(int k, int[] tangerine) {
		int solution =0;
		// 1. 무게 : 개수 Map 생성
		Map<Integer, Integer> map = new HashMap<>();
		for (int i = 0; i < tangerine.length; i++) {
			Integer count = map.getOrDefault(tangerine[i], 0);
			count++;
			// 개수 갱신
			map.put(tangerine[i], count);
		}
		// 2. 개수 많은 순 정렬
		List<Integer> keys = new ArrayList<>(map.keySet());
		Collections.sort(keys, (o1, o2) -> map.get(o2) - map.get(o1));

		// 3. k - 값 <=0 이면 종료, 참조한 값 개수 반환
		for(Integer key : keys) {
			k = k -map.get(key);
			solution++;

			if(k <=0)
				break;
		}
		return solution;
	}
}
  • Map Value 순 정렬
    • keySet 리스트를 만들고
    • 그 리스트를 정렬할때 기준을 map.get(key) 값 기준으로 정렬
    • 그러면 리스트에 key값 순으로 key들이 정렬
    • map 순회 시 리스트에서 key 가져다 사용!
  • 출처 : [java] HashMap value(값)로 정렬하기
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글