-풀이
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
'알고리즘' 카테고리의 다른 글
[그리디] 백준 1041 파이썬 (주사위) 골드5 (0) | 2022.05.23 |
---|---|
[dp/완탐] 백준 25194 파이썬 (결전의 금요일) 실버1 곰곰컵 (0) | 2022.05.22 |
[DFS/DP] 백준 2146 파이썬 (내리막 길) 골드4 (0) | 2022.05.20 |
[브루트포스/완전탐색] 백준 1107 파이썬 (리모컨) 골드5 (0) | 2022.05.19 |
[정렬] 백준 5800 파이썬 (성적통계) 실버5 (0) | 2022.05.17 |