백준/Greedy
[백준] 1092번: 배(다시 복습)
ydin
2022. 2. 8. 12:00
-문제: https://www.acmicpc.net/problem/1092
간단하게 봤는데 아니었던 문제. 블로그 참고해서 다시 복습해야할 것 같다
-정답풀이:
사실 이 풀이는 복잡하고, 이해도 안가서 이거 말고 다른 풀이로 푸는 게 더 나을 것 같다(7/14)
n=int(input())
crane=list(map(int,input().split()))
m=int(input())
box=list(map(int,input().split()))
crane.sort(reverse=True)
box.sort(reverse=True)
minute=0 #시간
checked=[0 for _ in range(m)] #박스를 옮겼는지 여부
count=0 #옮긴 박스의 개수
positions =[0]*n
if max(box)>max(crane):
print(-1)
else:
while count <len(box): #옮긴 박스가 전체 박스보다 적을 때까지 실행
for i in range(n):
while positions[i]<len(box):
#아직 안 옮긴 박스 중에서, 옮길 수 있는 박스를 만날 때까지 반복
if not checked[positions[i]] and crane[i]>=box[positions[i]]:
checked[positions[i]] = True
positions[i]+=1
count+=1
break
positions[i]+=1
minute+=1
print(minute)