Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
[백준] 1092 배
백준 1092 배
문제
지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다.
모든 화물은 박스 안에 넣어져 있고 항구에는 1분에 하나의 박스를 배에 실을 수 있는 크레인이 N대가 있다.
각 크레인은 무게 제한이 있어 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없으며 동시에 움직인다.
모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오.
입력
- 첫째 줄: N
- 두번째 줄: 각 크레인의 무게 제한
- 세번째 줄: 박스의 수 M
- 네번째 줄: 각 상자의 무게
출력
모든 박스를 배로 옮기는데 드는 시간의 최솟값
모든 박스를 옮길 수 없는 경우 -1 출력
해결 방식
- 크레인이 들 수 있는 무게와 박스 무게를 내림차순으로 정렬
- 각 크레인이 들 수 있는 가장 무거운 박스를 옮긴다.
- 시간 증가
코드
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)