saurus2
Saurus2
saurus2
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발
      • AJAX
    • ML Ops
    • Profile
    • 음식점
    • 배낭여행
    • 컴퓨터공학
      • 알고리즘 공부
      • C++
      • Sever 스터디
      • Java spring
      • 알고리즘 _ 문제해결
      • 딥러닝
      • Java 정리
      • Python
      • LeetCode 1000
      • Machine Learning Study
      • Sign language Detection Pro..
      • LeetCode Solutions
    • 비콘
    • 데일리 리포트
    • 유학일기
      • 영어 공부
      • Daily
    • AI Master Degree
      • Data Mining
      • AI and Data engineering
      • Math Foundations for Decisi..
      • Natural Language Processing

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 딥러닝
  • 온라인저지
  • 파이썬
  • Python
  • c++
  • LeetCode
  • 알고리즘
  • 리트코드
  • two pointer
  • 취준
  • BFS
  • 백준
  • 딕셔너리
  • 개발자 취업준비
  • 릿코드
  • 문제해결능력
  • 알고리즘문제해결
  • 개발자
  • DFS
  • 취업준비

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
saurus2

Saurus2

컴퓨터공학/LeetCode 1000

[LeetCode] 1710. Maximum Units on a Truck 파이썬 easy 정렬

2021. 10. 30. 15:12

1710. Maximum Units on a Truck

문제 해석:

2차원 배열에는 박스의 개수와 박스안에 들어있는 유닛의 개수가 저장되어있다.
그리고 Maximum 값이 주어지는데, 이것은 트럭에 올릴 수 있는 최대 박스 개수이다.
박스를 최대한 트럭에 실었을때, 최대의 유닛 개수를 구하자.

문제 풀이:

1. 트럭에 가장 많이 실어올리기 위해선 유닛이 가장 많은 박스를 올리는 것이 유리하다.
2. 정렬을 이용해 유닛 순으로, 오름차순으로 정렬한다.
3. 트럭에 실은 박스의 개수가 TruckSize가 넘기 전까지 박스 X 유닛의 값을 더해준다.
4. 박스의 개수가 TruckSize를 넘겼을때, 값을 더해주지 않고 실을 수 있는 만큼의 마지막 박스만 계산한다.

You are assigned to put some amount of boxes onto one truck. You are given a 2D array boxTypes, where boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi]:

  • numberOfBoxesi is the number of boxes of type i.
  • numberOfUnitsPerBoxi is the number of units in each box of the type i.

You are also given an integer truckSize, which is the maximum number of boxes that can be put on the truck. You can choose any boxes to put on the truck as long as the number of boxes does not exceed truckSize.

Return the maximum total number of units that can be put on the truck.

 

Example 1:

Input: boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4 Output: 8 Explanation: There are: - 1 box of the first type that contains 3 units. - 2 boxes of the second type that contain 2 units each. - 3 boxes of the third type that contain 1 unit each. You can take all the boxes of the first and second types, and one box of the third type. The total number of units will be = (1 * 3) + (2 * 2) + (1 * 1) = 8.

Example 2:

Input: boxTypes = [[5,10],[2,5],[4,7],[3,9]], truckSize = 10 Output: 91

 

Constraints:

  • 1 <= boxTypes.length <= 1000
  • 1 <= numberOfBoxesi, numberOfUnitsPerBoxi <= 1000
  • 1 <= truckSize <= 106
class Solution:
    def maximumUnits(self, boxTypes: List[List[int]], truckSize: int) -> int:
    	# 박스 유닛으로 오름차순 정렬
        sBoxTypes = sorted(boxTypes, key = lambda x : -x[1])
        cnt = 0
        ans = 0
        for box, unit in sBoxTypes:
        	# 박스와 유닛을 곱하기 전에 개수 확인
            cnt += box
            if cnt > truckSize:
            	# 박스를 실은 개수가 초과했을때, 남은 공간만큼 유닛 계산하여 싣기
                ans += (truckSize - (cnt - box)) * unit
                break
            ans += box * unit
        return ans

'컴퓨터공학 > LeetCode 1000' 카테고리의 다른 글

[LeetCode] 200. Number of Islands 파이썬 Medium  (0) 2021.10.31
[LeedCode] 56. Merge Intervals 파이썬 Medium  (0) 2021.10.31
[LeetCode] 937. Reorder Data in Log Files - Easy 파이썬 sorted key 함수  (0) 2021.10.30
[LeetCode/릿코드] - 10. Regular Expression Matching - (Hard/하드)  (0) 2021.07.31
[LeetCode/릿코드] - 4. Median of Two Sorted Arrays - (Hard/하드)  (0) 2021.07.28
    '컴퓨터공학/LeetCode 1000' 카테고리의 다른 글
    • [LeetCode] 200. Number of Islands 파이썬 Medium
    • [LeedCode] 56. Merge Intervals 파이썬 Medium
    • [LeetCode] 937. Reorder Data in Log Files - Easy 파이썬 sorted key 함수
    • [LeetCode/릿코드] - 10. Regular Expression Matching - (Hard/하드)
    saurus2
    saurus2
    Simple is Best

    티스토리툴바