프로그래머스

프로그래머스 - 다리를 지나는 트럭

yanJuicy 2024. 2. 2. 00:33
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42583

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

풀이

마지막 트럭이 다리를 오르는 시간을 알면 총 시간을 알 수 있다.

마지막 트럭이 오른 시간 + 다리의 길이를 하면 모든 트럭이 다리를 지나간 시간이다.

 

다리에 올라온 트럭이 다리를 건너는 시간을 구하기 위해 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

 

반응형