📌 LeetCode [2418]: Sort the People
🔗 문제 링크
문제 설명 📄
주어진 두 개의 리스트 names
와 heights
가 있습니다:
names
: 사람들의 이름을 나타내는 문자열 리스트.heights
: 사람들의 키를 나타내는 정수 리스트.
사람들의 키를 기준으로 내림차순으로 정렬하고, 정렬된 이름 리스트를 반환하세요.
문제 접근 방식 📋
- 키와 이름을 쌍으로 묶기:
zip
을 사용해 키와 이름을 튜플로 묶습니다.
- 키를 기준으로 정렬:
sorted
를 사용해 각 쌍을 키를 기준으로 내림차순으로 정렬합니다.
- 정렬된 결과에서 이름 추출:
- 정렬된 리스트에서 이름만 추출해 결과를 반환합니다.
Solution 💻
class Solution:
def sortPeople(self, names: List[str], heights: List[int]) -> List[str]:
return [name for _, name in sorted(zip(heights, names), reverse=True)]
시간 복잡도 ⏲️
- 정렬: (O(n log n)), (n)은 사람들의 수.
- 리스트 컴프리헨션: (O(n)), 정렬된 이름을 추출.
- 총 시간 복잡도: (O(n log n)).
공간 복잡도 🗄️
- 정렬에 사용되는 추가 공간: (O(n)), 키와 이름을 포함한 리스트 생성.
- 총 공간 복잡도: (O(n)).
'알고리즘 > 리트코드' 카테고리의 다른 글
LeetCode [2037]: Minimum Number of Moves to Seat Everyone (0) | 2024.12.04 |
---|---|
LeetCode [1200]: Minimum Absolute Difference (0) | 2024.12.04 |
LeetCode [2696]: Minimum String Length After Removing Substrings (0) | 2024.12.03 |
LeetCode [2022]: Convert 1D Array Into 2D Array (0) | 2024.12.03 |
LeetCode [796]: Rotate String (0) | 2024.12.02 |