문제

일단 이 문제는 다리 위, 대기중인 트럭을 stack으로 생각하여 풀어주면 되는 문제이다.
매 초마다 다리위의 위치가 한칸씩 이동하는데 이때 최대무게를 넘도록 트럭이 들어가는 경우에만 예외처리 해주면 된다.
그리고 계산은 대기중인 트럭이 없을 때까지를 기준으로 해주면 된다.
bridge = [0] * bridge_length
이런 식으로 다리를 다리길이만큼 0으로 채워 한칸씩으로 생각해주고 대기중인 트럭에서 조건에 맞는 다면 넣어주고 아니라면 넣지 않은채로 다리 내부의 위치가 한칸씩 이동한다고 생각해주면 된다.
전체코드
def solution(bridge_length, weight, truck_weights):
answer = 0
bridge = [0] * bridge_length
current_w = 0
while(truck_weights):
answer += 1
#다리의 마지막지점에 있던 트럭을 빼줌
current_w -= bridge.pop(0)
#현재 트럭 더해도 최대 무게 넘지 않을 때
if current_w + truck_weights[0] <= weight:
current_w += truck_weights[0]
bridge.append(truck_weights.pop(0))
else:
bridge.append(0)
#마지막 트럭이 다리를 건너는데 필요한 시간
answer += bridge_length
return answer
다리를 비어있는 리스트가 아니라 다리 길이만큼 0으로 채워 조건에 맞을 때만 추가해주는 방식을 생각하는 것이 가장 중요한 부분이였던 것 같다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 징검다리건너기 - python 파이썬 (4) | 2024.10.30 |
|---|---|
| [프로그래머스] 타겟넘버 - python 파이썬 (2) | 2024.10.16 |
| [프로그래머스] 기능개발 - python 파이썬 (2) | 2024.09.04 |
| [프로그래머스] 입국심사 - python 파이썬 (1) | 2024.08.28 |
| [프로그래머스] 단속 카메라 - python파이썬 (4) | 2024.08.27 |