백준 1092 : 문제링크

  • 문제유형 :

    • 탐욕 알고리즘
  • 설명

    • 크레인과 박스를 무게 기준으로 내림차순 정렬한다
    • 무거운 박스부터 크레인이 옮기도록한다
    • 크레인의 수 N, 박스의 수 M일때 시간복잡도는 O(NM)이다
  • 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    import sys

    n = int(input())
    cranes = list(map(int, input().split()))

    m = int(input())
    boxes = list(map(int, input().split()))

    if max(cranes) < max(boxes):
    print(-1)
    sys.exit()

    positions = [0] * n
    checked = [False] * m

    cranes.sort(reverse=True)
    boxes.sort(reverse=True)

    result = 0
    count = 0

    while True:
    if count == len(boxes):
    break
    for i in range(n):
    while position[i] < len(boxes):
    if not checked[position[i]] and cranes[i] >= boxes[position[i]]:
    checked[position[i]] = True
    position[i] += 1
    count += 1
    break
    position[i] += 1
    result += 1

    print(result)