기타/코딩테스트
[Python] 백준 1092번 - 배
lazy man
2023. 4. 26. 00:12
1. 문제정보
https://www.acmicpc.net/problem/1092
1092번: 배
첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보
www.acmicpc.net
2. 풀이
2~3시간의 고민 끝에 전략을 생각했는데 구현에 실패해서 다른 블로그의 풀이를 참고했다. 전략은 유사했지만 구현하는 과정에서 큰 차이가 있었다. 나는 크레인을 없애가면서 날짜를 카운팅하는 전략이였지만 박스를 없애가면서 날짜를 카운팅하는 전략이 훨씬 깔끔했다.
문제 해결의 포인트는 한 크레인이 상자를 들지 못하면 다음 크레인에서 처리할 수 있고 전체 크레인이 비교되었을 때 날짜를 증가시키면 답을 구할 수 있다.
3. 코드
import sys
input = sys.stdin.readline
n = int(input())
cranes = list(map(int, input().split()))
m = int(input())
boxs = list(map(int, input().split()))
cranes.sort(reverse=True)
boxs.sort(reverse=True)
if cranes[0] < boxs[0]:
print(-1)
else:
time = 0
while len(boxs) > 0:
for crane in cranes:
for box in boxs:
if crane >= box:
boxs.remove(box)
break
time += 1
print(time)