본문 바로가기
알고리즘/그리디

[백준][Python] 1092번 배

by 임짠짠 2022. 4. 28.
반응형
 

1092번: 배

첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보

www.acmicpc.net

 

코드

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)
cnt = 0
if crane[0] < box[0]:
    print(-1)
else:
    while len(box)>0:
        cnt+=1
        for i in range(n):
            for j in range(len(box)):
                if crane[i] >= box[j]:
                    box.pop(j)
                    break
    print(cnt)

 

설명

크레인과 박스의 입력값을 받아서 내림차순으로 정렬한다. 

for문을 이용해서 만약 박스의 무게가 크레인이 옮길 수 있는 무게보다 작거나 같으면 해당 박스를 리스트에서 pop 해줬다. for문을 빠져나왔을 때 아직 옮겨지지 않은 박스가 있으면 위의 단계를 다시 반복한다.

처음에 for문에서 j의 범위를 m으로 해서 인덱스 에러가 떴는데 box 리스트의 길이는 계속 pop 되고 있기 때문에 작아지고 있어서 j의 범위를 len(box)로 해줘야 한다. 

반응형

댓글