백준(BOJ)

[Python/파이썬] - 백준(BOJ) 1092번 : 배

phanre 2022. 5. 26. 13:18

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

 

1092번: 배

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

www.acmicpc.net

 

check 함수를 생성하여 내림차순 정렬된 box함수를 탐색

만약 crain[i]가 box의 최소값보다 적으면 crain 이후 값 모두 del 처리

box를 모두 탐색하기 전에 crain이 모두 del되면 -1 return

모두 탐색한다면 반복 횟수 answer return

 

def check():
    answer = 0
    while box:
        for c in crain:
            k = 0
            while k < len(box):
                if box[k] <= c:
                    del box[k]
                    break
                else:
                    if c < box[-1]:
                        i = len(crain)-1
                        while crain[i] <= c:
                            i -= 1
                            crain.pop()
                            if not crain:
                                return -1
                        break
                    else:
                        k += 1
        answer += 1
    return answer

n = int(input())
crain = sorted(list(map(int,input().split())),reverse=True)
m = int(input())
box = sorted(list(map(int,input().split())),reverse=True)
print(check())