반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42583
풀이
마지막 트럭이 다리를 오르는 시간을 알면 총 시간을 알 수 있다.
마지막 트럭이 오른 시간 + 다리의 길이를 하면 모든 트럭이 다리를 지나간 시간이다.
다리에 올라온 트럭이 다리를 건너는 시간을 구하기 위해 bridge_sec 큐를 따로 사용한다.
bridge_sec에는 트럭이 다리에 진입한 시간을 저장한다.
다리를 건너는 데는 bridge_length 만큼 시간이 걸리므로 다음 코드는 bridge 큐에 있는 첫 번째 트럭이 다리를 건넌 것을 의미한다.
bridge_sec[0] + bridge_length == sec
다리에 같이 진입할 수 있는 트럭들은 문제 조건에 맞게 bridge 큐에 추가한다.
코드
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def solution(bridge_length, weight, truck_weights):
bridge = []
bridge_sec = []
sec = 0
while truck_weights:
if bridge and bridge_sec[0] + bridge_length == sec:
bridge.pop(0)
bridge_sec.pop(0)
if sum(bridge) + truck_weights[0] <= weight and len(bridge) + 1 <= bridge_length:
bridge.append(truck_weights.pop(0))
bridge_sec.append(sec)
sec += 1
return sec + bridge_length
|
cs |
반응형
'프로그래머스' 카테고리의 다른 글
프로그래머스 - 할인 행사 (1) | 2024.02.06 |
---|---|
프로그래머스 - 완주하지 못한 선수 (0) | 2024.02.02 |
프로그래머스 - 카드 뭉치 (0) | 2024.01.31 |
프로그래머스 - 기능개발 (0) | 2024.01.30 |
프로그래머스 - 컨트롤 제트 (0) | 2024.01.26 |