저고데

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

프로그래머스

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

진철 2023. 1. 23. 20:44
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42583

 

프로그래머스

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

programmers.co.kr

문제를 간략히 요약하면 다음과 같다.

다리의 길이를 의미하는 bridge_length와 다리 위에 놓을 수 있는 최대 무게를 의미하는 weight, 그리고 트럭의 종류를 나타나는 배열인 truck_weights가 주어진다.

트럭이 다리를 건널 때, truck_weights 순서대로 이동할 수 있다.

이 때, 트럭의 무게가 최대 무게보다 작거나 같으면 여러 트럭이 순차적으로 건널 수 있을 때, 모든 트럭이 다리를 건널 때 걸리는 시간이 얼마인지 반환해야 한다.

 

코드를 작성하기 위한 순서는 다음과 같다.

1. 다리를 구현하기 위한 배열 bridge를 만들고, 모든 원소를 0으로 해준다.

2. answer를 +1 해주면서 bridge를 pop해주고 bridge의 원소의 합이 최대 무게보다 작다면 트럭을 다리 위에 하나 더 올려주고 그렇지 않다면 0을 추가해준다.

def solution(bridge_length, weight, truck_weights):
    answer = 0
    bridge=[0 for _ in range(bridge_length)] #1번
    while bridge: #bridge의 원소가 없다면 모든 트럭이 다리를 건넜다는 것을 의미한다.
        answer+=1
        bridge.pop(0) #트럭이 한 칸씩 움직이는 것을 나타내기 위해 맨 앞에서부터 pop을 해준다.
        if truck_weights:
            if sum(bridge)+truck_weights[0]<=weight: #다리 위의 무게 합이 최대 무게보다 작거나 같다면
                bridge.append(truck_weights.pop(0))     #트럭 하나를 더 올려준다.
            else:
                bridge.append(0) #모든 트럭을 다리 위에 올리기 전까지 다리의 길이는 변하면 안되기 때문에, 그렇지 않다면 0을 추가해준다.
    return answer
728x90
반응형