반응형
https://leetcode.com/problems/maximum-units-on-a-truck/description/
정렬을 이용한 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 박스 종류에 상관없이 총 개수만 truckSize이하이면 되므로 unit개수에 대한 내림차순으로 boxTypes를 정렬해줍니다.
2. static cmp함수로 sort함수의 3번째 인자에 넘겨 정렬 기준을 제시해 필요한 2차원 vector로 만들어줍니다.
3. 정답 변수 maxTotalUnits를 선언 후 0으로 초기화해줍니다.
📔 풀이과정
1. boxTypes의 원소를 순회하며 truckSize가 양수인 동안 다음을 수행합니다.
1-1. 존재하는 box 개수가 truckSize보다 작다면 전부 적재 가능하므로 box 개수 * box당 적재가능 unit만큼 maxTotalUnits에 더합니다.
1-2. 반대로 크다면 남은 truckSize만큼만 적재 가능하므로 truckSize * box당 적재가능 unit만큼 maxTotalUnits에 더합니다.
1-3. truckSize를 적재한 box개수만큼 제합니다.
📔 정답 출력 | 반환
maxTotalUnits를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
static bool cmp (vector<int> a, vector <int> b) {
if(a[1] == b[1]) return a[0] < b[0];
return a[1] > b[1];
}
int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
sort(boxTypes.begin(), boxTypes.end(), cmp);
int maxTotalUnits = 0;
for(int i = 0; i < boxTypes.size() && truckSize > 0; i++) {
if(boxTypes[i][0] < truckSize) {
maxTotalUnits += boxTypes[i][0] * boxTypes[i][1];
} else {
maxTotalUnits += truckSize * boxTypes[i][1];
}
truckSize -= boxTypes[i][0];
}
return maxTotalUnits;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Sorting' 카테고리의 다른 글
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 뒤에서 5등 뒤로 (0) | 2024.10.20 |
---|---|
(Python3) - 프로그래머스(코딩 기초 트레이닝) : 뒤에서 5등까지 (1) | 2024.10.20 |
(C++) - LeetCode (easy) 1637. Widest Vertical Area Between Two Points Containing No Points (0) | 2024.05.20 |
(C++) - LeetCode (easy) 1460. Make Two Arrays Equal by Reversing Subarrays (0) | 2024.03.27 |
(C++) - LeetCode (easy) 1337. The K Weakest Rows in a Matrix (1) | 2024.02.07 |