알고리즘/LeetCode

2418. Sort the People

앤테바 2022. 12. 24. 23:56
반응형

 

문제)

2418. Sort the People

 

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.

 

Example 1:

Input: names = ["Mary","John","Emma"], heights = [180,165,170]
Output: ["Mary","Emma","John"]
Explanation: Mary is the tallest, followed by Emma and John.

Example 2:

Input: names = ["Alice","Bob","Bob"], heights = [155,185,150]
Output: ["Bob","Alice","Bob"]
Explanation: The first Bob is the tallest, followed by Alice and the second Bob.

 

Constraints:

  • n == names.length == heights.length
  • 1 <= n <= 103
  • 1 <= names[i].length <= 20
  • 1 <= heights[i] <= 105
  • names[i] consists of lower and upper case English letters.
  • All the values of heights are distinct.

 

솔루션1)

- zip() 함수를 이용해서 이름과 키를 묶어서 people 리스트를 만든다.

- people을 키 내림차순으로 정렬한다

- people 리스트를 전치 시켜서 이름만 리턴

class Solution:
    def sortPeople(self, names: List[str], heights: List[int]) -> List[str]:
        people = []
        for name, height in zip(names, heights):
            people.append([name, height])
        
        people = sorted(people, key=lambda x: -x[1])        
        return list(zip(*people))[0]

 

반응형