배(그리디)

qk1890·2일 전
0

BOJ

목록 보기
4/7

https://www.acmicpc.net/problem/1092

1. 코드

import sys
n = int(input())
limits = map(int, sys.stdin.readline().split()) # 크레인 별 무게 제한
m = int(input())
packages = map(int, sys.stdin.readline().split()) # 화물 별 무게

# 무게 제한과 화물 무게 전부 내림차순으로 정렬
limits = sorted(limits, reverse=True)
packages = sorted(packages, reverse=True)

# 무게 제한이 제일 높은 크레인도 제일 무거운 화물을 들 수 없는 경우
if packages[0] > limits[0]: 
    print(-1)

time = 0
# 화물이 전부 옮겨질 때까지
while len(packages) > 0:
    time += 1
    # 무게제한을 돌면서 옮길 수 있는 화물을 옮김
    for l in limits:
        for j in range(len(packages)):
            if l >= packages[j]: # 화물을 옮길 수 있으면
                del packages[j]
                break
print(time)

2. 기억할 점

최대무게를 기준하기 때문에 내림차순을 한다.
리스트 del로 리스트를 제거한다.
1. del list: 인덱스로 삭제
2. list.remove() 함수 : 값으로 삭제

profile
경험을 정리하는 곳

0개의 댓글