[백준] 1092 배

백준 1092 배

문제

지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다.

모든 화물은 박스 안에 넣어져 있고 항구에는 1분에 하나의 박스를 배에 실을 수 있는 크레인이 N대가 있다.

각 크레인은 무게 제한이 있어 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없으며 동시에 움직인다.

모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄: N
  • 두번째 줄: 각 크레인의 무게 제한
  • 세번째 줄: 박스의 수 M
  • 네번째 줄: 각 상자의 무게

출력

모든 박스를 배로 옮기는데 드는 시간의 최솟값

모든 박스를 옮길 수 없는 경우 -1 출력

해결 방식

  1. 크레인이 들 수 있는 무게와 박스 무게를 내림차순으로 정렬
  2. 각 크레인이 들 수 있는 가장 무거운 박스를 옮긴다.
  3. 시간 증가

코드

import sys
input = sys.stdin.readline

n = int(input())
craneWeights = list(map(int, input().split()))
craneWeights.sort(reverse=True)

m = int(input())
boxWeights = list(map(int, input().split()))
boxWeights.sort(reverse=True)

time = 0

if craneWeights[0] < boxWeights[0]:
    time = -1
else:
    while len(boxWeights) > 0:
        for craneWeight in craneWeights:
            for boxWeight in boxWeights:
                if craneWeight >= boxWeight:
                    boxWeights.remove(boxWeight)
                    break
        time += 1
print(time)

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus