문제 풀이
def solution(bridge_length, weight, truck_weights):
# answer += bridge_length를 할 것이기 때문에 그냥 처음부터 다리 길이를 answer에 넣었다.
answer = bridge_length
# 현재 다리 위에 있는 트럭의 무게
current_weight = 0
# 현재 다리 위에 있는 트럭의 배열
truck_on_bridge = list()
# 각 트럭을 반복문으로 돌면서
for i in range(len(truck_weights)):
truck = truck_weights[i]
while True:
# 다리에 트럭이 한 대도 없으면
if not truck_on_bridge:
# 트럭이 다리위에 올라가고 해당 트럭의 무게를 추가. 시간 증가.
truck_on_bridge.append(truck)
current_weight += truck
answer += 1
break
# 다리 길이 만큼 트럭이 꽉 차있으면
elif len(truck_on_bridge) == bridge_length:
# 트럭이 나가고 그 무게도 뺀다.
current_weight -= truck_on_bridge.pop(0)
# 다리에 트럭이 있는데
else:
# 트럭이 한 대 더 들어가면 무게가 넘어갈 경우
if truck + current_weight > weight:
# 0을 추가함으로써 트럭이 한칸 앞으로 움직였다는 것(시간의 증가)을 표현. 무게는 중가하지 않는다.
truck_on_bridge.append(0)
answer += 1
# 한 대가 더 들어가도 무게가 넘지 않는다면
else:
# 트럭이 한 대 더 진입한다. 무게와 시간 또한 증가.
truck_on_bridge.append(truck)
current_weight += truck
answer += 1
break
자칫 헷갈리거나 어려워보일 수 있는 문제였으나 문제를 잘게 나누어 한 부분씩 처리하면 생각보다 해결의 실마리가 눈에 빨리 띌 수 있다는 것을 알려준 문제였습니다.
문제 링크
programmers.co.kr/learn/courses/30/lessons/42583?language=python3
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Python] 더 맵게 (0) | 2020.11.29 |
---|---|
[프로그래머스] [Python] 프린터 (0) | 2020.11.27 |
[프로그래머스] [Python] 기능 개발 (0) | 2020.11.23 |
[프로그래머스] [Python] 주식가격 (0) | 2020.11.19 |
[프로그래머스] [Python] 베스트앨범 (0) | 2020.11.19 |