[백준/python/1092] 배

bej_ve·2022년 5월 5일
0

python알고리즘

목록 보기
27/46

문제링크 :

문제

이번 문제는 크레인으로 박스들을 옮기는 문제다. 처음에 for문을 여러번 써서 시간초과가 났다. 시간초과를 해결하기 위해 for문으로 모든 박스들을 탐색하지 않고 정렬과 while문을 통해 이동시킬 수 있는 박스를 찾으면 벗어나도록 했다.
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)

time=0
count=0
visited=[0 for _ in range(m)]
crane_visited=[0]*n

if max(crane) < max(box):
    print(-1)
else:
    while count<len(box):
        for i in range(n):
            while crane_visited[i]<len(box):
                if not visited[crane_visited[i]] and crane[i]>=box[crane_visited[i]]:
                    visited[crane_visited[i]]=True
                    count+=1
                    crane_visited[i]+=1
                    break
                crane_visited[i]+=1
        time+=1
    print(time)

0개의 댓글