1092_배

hii_·2022년 6월 4일
0

BOG

목록 보기
15/22

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

  • 문제
    지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다.
    각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오.

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

  • 출력
    첫째 줄에 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 출력한다. 만약 모든 박스를 배로 옮길 수 없으면 -1을 출력한다.

처음 제출한 코드는 왜 틀렸는지 모르겠다 ㅠㅠ 테케 다 맞고 문제없어보이는데 정신없는 막코딩은 항상 틀리는 것 같다,,

문제 해결 : 가장 큰 제한무게를 가진 크레인이 가장 큰 무게의 박스를 옮기도록 한다.

import sys
n = int(input())    # 크레인 수
c_arr = map(int, sys.stdin.readline().split())
m = int(input())    # 박스 수
b_arr = map(int, sys.stdin.readline().split())

c_arr = sorted(c_arr, reverse=True)    # 내림차순 정렬
b_arr = sorted(b_arr, reverse=True)    # 내림차순 정렬

if c_arr[0] < b_arr[0]:
# 박스무게가 크레인의 최대제한무게보다 크면
    print(-1)
    exit()

c_check = [0 for _ in range(len(c_arr))]    # 사용크레인 체크
# cnt = 0    # 옮겨지는 박스의 수
# turn = 0    # 시간
ans = 0
while len(b_arr) > 0:
    for i in c_arr:    # 크레인의 제한무게. 크레인 다쓰면 다음턴으로 넘어가서 ans에 1 더해줌
        for j in range(len(b_arr)):
            if i >= b_arr[j]:
                del b_arr[j]
                break
    ans += 1
print(ans)
profile
🐢👩‍💻⛄🤍💜

0개의 댓글