[LeetCode] Maximum Units on a Truck

준규·2022년 8월 17일
0

트럭의 사이즈(박스 적재량 = truckSize)인 트럭이 있고

boxTypes 라는 2차원 배열이 주어진다고 한다

이 때 2차원 배열의 자식 배열의 0번째 원소값은 그 타입의 박스의 갯수, 1번째 원소값은 그 타입 박스의 유닛사이즈라고 한다

예를 들어 boxTypes = [[1,2],[2,2], [3,1]] 이라면

0번째 박스 타입의 갯수는 1, 유닛사이즈는 2

1번째 박스 타입의 갯수는 2, 유닛사이즈는 2

2번째 박스 타입의 갯수는 3, 유닛사이즈는 1 인셈이다

이러한 조건에서 트럭에 실을 수 있는 박스 유닛사이즈의 최댓값을 리턴하는 문제이다

Example을 보면

트럭의 사이즈는 정해져 있고 박스 유닛사이즈의 값이 최대가 되게 하려면

유닛사이즈가 큰 박스부터 트럭에 실어야 한다

그래서 우선 각 원소 배열의 1번 인덱스의 값을 기준으로 내림차순 정리를 해주었다

boxTypes.sort((a,b) => b[1] - a[1]);

그러면 boxTypes 배열이 유닛사이즈 값을 기준으로 내림차순으로 정리가 되므로

앞의 박스들부터 현재 truck 사이즈에 따라 분기를 해주어 트럭에 실을 수 있는 유닛사이즈 값을 계산해주었다

const maximumUnits = function(boxTypes, truckSize) {
    let result = 0;
    boxTypes.sort((a,b) => b[1] - a[1]);
    
    for(let i = 0; i < boxTypes.length; i++) {
        if(boxTypes[i][0] <= truckSize) {
            truckSize -=boxTypes[i][0];
            result += boxTypes[i][1] * boxTypes[i][0];
        }else if(boxTypes[i][0] > truckSize) {
            result += truckSize * boxTypes[i][1];
            truckSize -=boxTypes[i][0];
        }
        if(truckSize <= 0) return result;
    }
    return result;
};

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글