2/프로그래머스
프로그래머스 연습 문제 - 다리를 지나는 트럭
하례은
2020. 9. 27. 19:14
programmers.co.kr/learn/courses/30/lessons/42583
코딩테스트 연습 - 다리를 지나는 트럭
트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이��
programmers.co.kr
스택/큐 문제
~처음 푼 방법
def solution(bridge_length, weight, truck_weights):
finish = []
answer = 0
while truck_weights:
truck = truck_weights.pop(0)
finish.append(truck)
answer += bridge_length
for i in range(len(truck_weights)):
truck += truck_weights[0]
if len(truck_weights) >= 1:
if weight >= truck:
finish.append(truck_weights.pop(0))
answer += 1
return answer+1
채점 결과
정확성: 28.6
합계: 28.6 / 100.0
맞겠지 하고 봤는데 생각해보니 같이 지나가면서 하나가 빠지면 또 비어있는 무게만큼 들어와 기존의 차량과 같이 이동할 수 있기 때문에 완전 틀린답이었다... 문제 이해력은 언제 올라가려나 ㄱ-...
~다른사람 풀이
def solution(bridge_length, weight, truck_weights):
answer = 0
on_bridge = []
on_time = []
while (truck_weights or on_bridge):
answer += 1
if(on_time):
if(on_time[0] + bridge_length == answer):
on_bridge.pop(0)
on_time.pop(0)
if(truck_weights):
if(sum(on_bridge) + truck_weights[0] <= weight):
on_bridge.append(truck_weights.pop(0))
on_time.append(answer)
return answer
다른분들 풀이 참고해서 그냥 코드리뷰식으로 풀었다ㄱ-...
on_time은 트럭이 들어간 시간을 담는 배열
on_bridge는 다리 위에 있는 트럭의 무게를 담는 배열
트럭이 들어올 수 있으면 append를 한다. 들어온 시간과 다리의 길이를 합하여 흐른 시간과 비교했을때 같으면 다리를 건너 pop해준다.