넘치게 채우기

[LeetCode] 2418. Sort the People 본문

PS/LeetCode

[LeetCode] 2418. Sort the People

riveroverflow 2024. 7. 22. 10:27
728x90
반응형

https://leetcode.com/problems/sort-the-people/description/

leetcode - Sort the People

문제 유형 : 정렬, 우선순위 큐

문제 난이도 : Easy

 

문제

You are given an array of strings names, and an array heights that consists of distinct positive integers. Both arrays are of length n.

For each index i, names[i] and heights[i] denote the name and height of the ith person.

Return names sorted in descending order by the people's heights.

 

문자열 배열 names, 자연수 배열 heights를 받는다.

두 배열은 n의 길이를 가진다.

names[i]와 heights[i]는 각각 i번째 사람의 이름과 키이다.

키순으로 내림차순 정렬을 한 이름을 반환하라.

 

풀이

n개의 쌍들을 최대 힙 우선순위 큐에 {heights[i], names[i]}를 넣는다.

순서대로 뺴서 이름만 정답을 담는 배열에 넣는다.

 

코드

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<string> sortPeople(vector<string>& names, vector<int>& heights) {
        priority_queue<pair<int, string>> pq;

        int n = names.size();
        for(int i = 0; i < n; i++) {
            pq.push({heights[i], names[i]});
        }

        vector<string> ans;
        while(!pq.empty()) {
            ans.push_back(pq.top().second);
            pq.pop();
        }

        return ans;
    }
};
 
728x90
반응형