반응형
코드
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)로 해줘야 한다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 2812번 크게 만들기 (0) | 2022.05.02 |
---|---|
[백준][Python] 2141번 우체국 (0) | 2022.04.29 |
[백준][Python] 19598번 최소 회의실 개수 (0) | 2022.04.27 |
[백준][Python] 11509 풍선 맞추기 (0) | 2022.04.13 |
[백준][Python] 11000번 강의실 배정 (0) | 2022.04.12 |
댓글