-문제 : https://www.acmicpc.net/problem/1092

 

-정답 풀이 : 

가장 큰 무게를 들 수 있는 크레인디 들 수 없는 무게가 있다면 모든 박스를 배로 옮길 수 없기에 -1을 출력한다

그 외에는 가장 큰걸로 여러번 옮기나 여전히 옮길 수 있으므로 진행한다

크레인 단위로 가야하니까 크레인 단위로 boxes를 탐색한다.

탐색하다 조건(크레인의 무게보다 적은) 박스가 있을 때마다 그 박스를 없애준다

이전 풀이에 비하면 약 10배는 시간이 더 걸리지만, 일단 이게 제일 이해가 잘가서 다음 풀이로 기록한다. 

n=int(input())
cranes=list(map(int,input().split()))
m=int(input())
boxes=list(map(int,input().split()))

cranes.sort(reverse=True)           
boxes.sort(reverse=True)
if cranes[0]<boxes[0]:
    print(-1)
else:
    answer=0
    while(len(boxes)>0):
        answer+=1
        for i in range(n):           
           for j in range(len(boxes)):
               if cranes[i]>=boxes[j]:
                   del boxes[j]
                   break
    print(answer)

+ Recent posts