📌 LeetCode [1710]: Maximum Units on a Truck
🔗 문제 링크
문제 설명 📄
트럭에 적재할 수 있는 최대 유닛을 계산하는 문제입니다.
박스의 종류와 각각의 박스당 유닛 수가 주어졌을 때, 유닛 수가 많은 박스를 우선적으로 적재하여 최대 유닛을 적재해야 합니다. 트럭에는 제한된 수의 박스만 적재할 수 있습니다.
문제 접근 방식 📋
- 정렬:
- 박스당 유닛 수를 기준으로 내림차순 정렬합니다.
- 최적 적재:
- 각 박스 타입에서 현재 트럭이 적재 가능한 박스 수를 계산하고, 트럭 크기를 감소시킵니다.
- 트럭이 가득 찼으면 루프를 종료합니다.
Solution 💻
class Solution:
def maximumUnits(self, boxTypes: List[List[int]], truckSize: int) -> int:
boxTypes.sort(key=lambda x: x[1], reverse=True)
answer = 0
for boxType, unit in boxTypes:
resultBox = min(boxType, truckSize)
answer += unit * resultBox
truckSize -= resultBox
if truckSize == 0:
break
return answer
시간 복잡도 분석 ⏲️
- 정렬:
O(n log n)
– 박스 리스트를 유닛당 가치로 정렬. - 박스 처리:
O(n)
– 각 박스 타입을 한 번씩 처리. - 총 시간 복잡도:
O(n log n)
.
공간 복잡도 분석 🗄️
- 정렬 사용 공간:
O(n)
– 내부적으로 정렬 시 사용. - 추가 변수 공간:
O(1)
– 추가 메모리는 상수 공간 사용.
'알고리즘' 카테고리의 다른 글
LeetCode [2231]: Largest Number After Digit Swaps by Parity (0) | 2024.12.19 |
---|---|
LeetCode [1275]: Find Winner on a Tic Tac Toe Game (0) | 2024.12.19 |
LeetCode [1957]: Delete Characters to Make Fancy String (0) | 2024.12.18 |
LeetCode [2053]: Kth Distinct String in an Array (0) | 2024.12.17 |
LeetCode [345]: Reverse Vowels of a String (0) | 2024.12.16 |