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)
'기타 > 코딩테스트' 카테고리의 다른 글
[Python] 프로그래머스 - 의상 (0) | 2023.08.19 |
---|---|
[Python] 프로그래머스 - 기사단원의 무기 (0) | 2023.08.02 |
[Python] 백준 19598번 - 최소 회의실 개수 (0) | 2023.04.25 |
[Python] 백준 1263번 - 시간관리 (0) | 2023.04.24 |
[Python] 백준 2782번 - 우리집엔 도서관이 있어 (0) | 2023.04.24 |