본문 바로가기

알고리즘/백준

백준[1092] 배 (Python3)

풀이 방향은 금방 알았지만 구현 과정에서 많이 짜증났던 문제.
파이썬 포문에선 인덱스 변수 증감이 안 되다 보니 억지로 맞추다가 2번정도 틀렸다

다른 사람들 풀이보니까 remove를 썼던데 그냥 나도 remove를 썼다면 한번에 풀지 않았을까란 생각이 든다.

지문 분석

무거운 크레인은 무거운 박스를 우선으로 들어야 한다.
가벼운 것 부터 들게 된다면, 박스는 점점 무거워지고, 그 과정에서 노는 크레인들이 발생하기 때문이다.
박스와 크레인을 내림차순 정렬해야 한다.

완전 탐색

옮길 박스가 현재 매달려는 크레인에 달 수 있는지 본다.
만약, 그렇지 않다면 해당 박스는 건너뛰고 다음 박스를 달 수 있는지 본다.
이렇게 모든 크레인을 한번씩 순회하면 전체 시간을 1 증가시킨다.

이제 남은 박스들을 가지고 위의 과정을 반복하면 된다.

 

더보기
def main():
    N = int(input())
    cranes = list(map(int, input().split()))
    cranes.sort(reverse=True)

    M = int(input())
    boxes = list(map(int, input().split()))
    boxes.sort(reverse=True)

    if cranes[0] < boxes[0]:
        print(-1)
        return

    answer = 0
    while boxes:
        for crane in cranes:
            if not boxes:
                break
            elif crane < boxes[-1]:
                break
            for box in boxes:
                if crane >= box:
                    boxes.remove(box)
                    break
        answer += 1
    print(answer)



if __name__ == "__main__":
	main()

'알고리즘 > 백준' 카테고리의 다른 글

백준[2513] 통학버스 (Python3)  (0) 2022.11.05
백준[17615] 볼 모으기 (Python3)  (0) 2022.11.05
백준[17616] 등수 찾기 (Python3)  (0) 2022.11.05
백준[15973] 두 박스 (Python3)  (0) 2022.11.05
백준[19585] 전설 (Python3)  (0) 2022.11.05