diff --git a/H0ngJu/README.md b/H0ngJu/README.md index af4ff40e..51325d9c 100644 --- a/H0ngJu/README.md +++ b/H0ngJu/README.md @@ -1,7 +1,8 @@ ## ✏️ 기록 -| 차시 | 날짜 | 문제유형 | 링크 | 풀이 | -| :---: | :--------: | :------: | :-------------------------------------------------------------------------: | :-------------------------------------------------: | -| 1차시 | 2024.03.05 | 큐 | [프로세스](https://school.programmers.co.kr/learn/courses/30/lessons/42587) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/151 | +| 차시 | 날짜 | 문제유형 | 링크 | 풀이 | +| :---: | :--------: | :------: | :-----------------------------------------------------------------------------------: | :-------------------------------------------------: | +| 1차시 | 2024.03.05 | 큐 | [프로세스](https://school.programmers.co.kr/learn/courses/30/lessons/42587) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/151 | +| 2차시 | 2024.03.07 | 큐 | [다리를 지나는 트럭](https://school.programmers.co.kr/learn/courses/30/lessons/42583) | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/153 | --- diff --git "a/H0ngJu/\355\201\220/\353\213\244\353\246\254\353\245\274 \354\247\200\353\202\230\353\212\224 \355\212\270\353\237\255.py" "b/H0ngJu/\355\201\220/\353\213\244\353\246\254\353\245\274 \354\247\200\353\202\230\353\212\224 \355\212\270\353\237\255.py" new file mode 100644 index 00000000..31404e34 --- /dev/null +++ "b/H0ngJu/\355\201\220/\353\213\244\353\246\254\353\245\274 \354\247\200\353\202\230\353\212\224 \355\212\270\353\237\255.py" @@ -0,0 +1,26 @@ +from collections import deque + +def solution(bridge_length, weight, truck_weights): + time = 0 + onBridge = deque() # 현재 다리 위에 있는 트럭 + truckNum = 0 # 현재 다리 위에 있는 트럭 수 + sum = 0 # 현재 다리 위에 있는 트럭 무게의 합 + truck_weights = deque(truck_weights) + + while truck_weights or onBridge: + time += 1 + + # 트럭이 다리를 지나가는 경우 처리 + if onBridge and time - onBridge[0][1] >= bridge_length: + sum -= onBridge.popleft()[0] + truckNum -= 1 + + # 다음 트럭이 다리에 올라갈 수 있는 경우 처리 + # 트럭이 있고 합이 weight을 넘지 않으며, 수가 bridge_length를 넘기지 않는 경우 + if len(truck_weights) != 0 and sum + truck_weights[0] <= weight and truckNum + 1 <= bridge_length: + truck = truck_weights.popleft() # pop + onBridge.append((truck, time)) # 다리 위의 truck에 tuple 추가 + sum += truck # 무게 추가 + truckNum += 1 # 건너고 있는 트럭 추가 + + return time \ No newline at end of file