넘치게 채우기

[LeetCode] 1636. Sort Array by Increasing Frequency 본문

PS/LeetCode

[LeetCode] 1636. Sort Array by Increasing Frequency

riveroverflow 2024. 7. 23. 10:13
728x90
반응형

https://leetcode.com/problems/sort-array-by-increasing-frequency/description/

leetcode - Sort Array by Increasing Frequency

문제 유형 : 정렬

문제 난이도 : Easy

 

문제

Given an array of integers nums, sort the array in increasing order based on the frequency of the values. If multiple values have the same frequency, sort them in decreasing order.

Return the sorted array.

 

정수 배열 nums가 주어진다. 배열을 수가 나오는 빈도에 따라 오름차순 정렬하라. 빈도가 같으면 내림차순하라.

정렬된 배열을 반환하시오.

 

풀이

map<int, int>를 만들어서 빈도를 저장한다.

배열을 람다 함수를 이용해 정렬해주면 된다.

 

 

코드

C++

#pragma GCC optimize("03", "unroll-loops");
static const int __ = [](){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    return 0;
}();

class Solution {
public:
    vector<int> frequencySort(vector<int>& nums) {
        int n = nums.size();
        unordered_map<int, int> freq;
        for(int i = 0; i < n; i++) {
            freq[nums[i]]++;
        }

        sort(nums.begin(), nums.end(), [&freq](const auto &a, const auto &b){
            if(freq[a] == freq[b]) return a > b;
            return freq[a] < freq[b];
        });

        return nums;
    }
};
728x90
반응형