반응형

-풀이

crane_count = int(input())
crane = list(map(int,input().split()))
goods_count = int(input())
goods = list(map(int,input().split()))
crane.sort(reverse=True)
goods.sort(reverse=True)

#크레인보다 화물이 크면 -1 출력
if crane[0] < goods[0]:
  print(-1)
else:
  count = 0
  #화물을 다 옮길때까지 반복
  while (len(goods) > 0):
    #모든 크레인을 한번씩 거쳐 화물을 옮겼다면 count를 1 올려줌
    for i in crane:
      for j in goods:
        if i >= j:
          goods.remove(j)
          break
    count+=1
  print(count)

-풀이설명

처음에 오름차순으로 정렬하여 로직을 짜다가 예제출력은 모두 맞췄는데 계속 실패가 뜨고, 예외 예제를 찾지 못했다. 그래서 풀이를 보게 되었는데, 무거운 화물과 무게를 크게 실을 수 있는 크레인부터 비교하면 로직을 짜기 쉬웠다. 그래서 바로 내림차순으로 정렬해주어, 크레인보다 화물이 클 때는 -1을 출력해주고 그게 아니면 화물을 다 옮길때 까지 반복하여 모든 크레인을 한 화물이 거쳐갔다면 count를 1씩 증가시켜주면 해결되었다.

참고풀이출처:https://jokerldg.github.io/algorithm/2021/06/11/ship.html

+ Recent posts