[BOJ]1092 배

✔️ 문제 링크

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

💡 핵심 아이디어

1️⃣ 매 시간마다 가장 무거운 박스를 들 수 있는 크레인 순으로 가장 무거운 박스부터 나른다.

2️⃣ 나른 박스는 리스트에 제거하며 시간 절약을 위해 크레인 배열과 박스 배열을 내림차순 정렬후 리스트를 순회하며 작업을 수행한다.

⭐️ 소스 코드

if __name__ == '__main__':
    N = int(input())
    crane_list = map(int, input().split())

    M = int(input())
    box_list = map(int, input().split())

    crane_list = sorted(crane_list, key = lambda x : -x)
    box_list = sorted(box_list, key = lambda x : -x)

    ans = 0
    flag = False

    while(True):
        if len(box_list) == 0:
            break

        if crane_list[0] < box_list[0]:
            ans = -1
            break
        flag = False
        for crane in crane_list:
            temp = 0

            if len(box_list) == 0:
                ans += 1
                flag = True
                break

            for box in box_list:
                if crane >= box:
                    temp = box
                    break
            # 박스를 없애줌
            if temp != 0:
                box_list.remove(temp)

        if flag:
            break

        ans += 1

    print(ans)

좋은 웹페이지 즐겨찾기