📌 LeetCode [2037]: Minimum Number of Moves to Seat Everyone
🔗 문제 링크
문제 설명 📄
학생들을 좌석에 앉히는 문제입니다.
두 개의 리스트가 주어집니다:
seats
: 좌석의 위치를 나타내는 정수 리스트.students
: 학생들이 현재 위치한 정수 리스트.
학생들을 좌석에 앉히기 위해 학생들을 좌석으로 이동시켜야 합니다.
이동 거리의 최소 합을 계산하세요.
- 학생은 한 번에 1만큼 이동할 수 있습니다.
문제 접근 방식 📋
- 정렬:
- 학생과 좌석을 정렬하여 가장 가까운 순서로 매칭.
- 매칭 및 거리 계산:
- 정렬된
seats
와students
를zip
으로 매칭. - 각 좌석과 학생 간의 거리를 계산하여 합산.
- 정렬된
Solution 💻
class Solution:
def minMovesToSeat(self, seats: List[int], students: List[int]) -> int:
seats.sort()
students.sort()
answer = 0
for seat, student in zip(seats, students):
answer += abs(seat - student)
return answer
시간 복잡도 ⏲️
- 정렬: (O(n log n)), (n)은 리스트의 길이.
- 매칭 및 합산: (O(n)).
- 최종 시간 복잡도: (O(n log n)).
공간 복잡도 🗄️
- 정렬에 사용되는 공간: (O(n)) (Python의 Timsort 사용).
- 총 공간 복잡도: (O(n)).
'알고리즘' 카테고리의 다른 글
LeetCode [884]: Uncommon Words from Two Sentences (0) | 2024.12.05 |
---|---|
LeetCode [3110]: Score of a String (0) | 2024.12.04 |
LeetCode [1200]: Minimum Absolute Difference (0) | 2024.12.04 |
LeetCode [2418]: Sort the People (0) | 2024.12.04 |
LeetCode [2696]: Minimum String Length After Removing Substrings (0) | 2024.12.03 |