알고리즘/항해99

99클럽 코테 스터디 32일차 TIL + 정렬(Top K Frequent Elements)

IamBD 2024. 6. 20. 22:58

오늘의 과제

리트코드 medium으로 분류된 Top K Frequent Elements 입니다.

 

이번 유형은 정렬입니다.

문제

https://leetcode.com/problems/top-k-frequent-elements/description/

 

 

먼저 문제 요구사항 요약입니다.

 

문자열이과 정수가 주어지면 문자의 빈도에 따라 내림차순으로 정렬 후 정수만큼 반환해주면 됩니다.

 

어제의 문자와 완전히 동일하게 풀었습니다.

 

코드입니다.

import java.util.*;

class Solution {

    // 1. num을 센다.
    // 2. 정렬을 한다.
    // 3. k만큼 배열에 넣는다.
    public int[] topKFrequent(int[] nums, int k) {
        var map = new HashMap<Integer, Integer>();

        for (int i : nums) {
            map.put(i, map.getOrDefault(i, 0) + 1);
        }

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

        var answer = new int[k];

        for (int i = 0; i < k; i++) {
            answer[i] = keySet.get(i);
        }

        return answer;
    }
}

 

배운 점

익숙하면서도 꼴려면 얼마든지 꼴 수 있는 정렬 문제가 나왔습니다.

 

오늘의 문제는 비굦거 굉장히 쉽게 나왔지만 내일부터 조금 기대 반 두려움 반이 있네요.

 

 

오늘의 한줄평

正進