본문 바로가기

프로그래머스 풀이

프로그래머스 2단계 - 다리를 지나가는 트럭(Python)

깃허브:

https://github.com/MSIQOC/Programmers/blob/main/%EB%8B%A4%EB%A6%AC%EB%A5%BC%EC%A7%80%EB%82%98%EB%8A%94%ED%8A%B8%EB%9F%AD.py

 

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

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈

programmers.co.kr

 

https://minhamina.tistory.com/241

 

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

문제 https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너

minhamina.tistory.com

입출력 예를 이해하기 힘든 부분이 있어서 인터넷을 따로 참고했다.

내가 짠 알고리즘으로는 큐에 값이 들어갈 때마다 시간이 지나가고 모든 트럭이 다 다리를 지나간게 확인이 되면 종료하게 되는데, 그렇게 하면 마지막 트럭이 지나갈 때 시간 카운팅을 안해주기 때문에 시간이 answer라 하면 answer+1을 리턴해줘야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def solution(bridge_length, weight, truck_weights):
    queue = []
    dochak = 0
    answer = 0
    qw = 0
    end = len(truck_weights)
    point = 0
    while dochak != end :
        if len(queue) == bridge_length:
            p = queue.pop(0)
            qw -= p
            if p != 0 :
                dochak += 1
        elif point == end:
            queue.append(0)
            answer += 1
        elif qw + truck_weights[point] > weight :
            queue.append(0)
            answer += 1
        elif qw + truck_weights[point] <= weight :
            queue.append(truck_weights[point])
            qw += truck_weights[point]
            point += 1
            answer += 1        
    return answer + 1