프로그래머스
[프로그래머스]다리를 지나는 트럭
진철
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
반응형