문제
https://school.programmers.co.kr/learn/courses/30/lessons/42583#
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
일차선 다리에 트럭 여러 대가 지나가려고 하는데, 정해진 순서로 건너갈 때 최소 몇 초가 걸리는지 구하여라.
단순한 구현 문제이다.
현재 다리를 건너는 트럭이 무엇이 있는지 알고 있어야 하며, 무게를 총 얼마나 나가는지 알고 있어야 한다.
계속해서 새로운 트럭이 다리를 건너야 하며, 이 때 다리의 하중을 넘게 된다면 타고 있는 트럭들을 다리의 하중이 맞을 때까지 내려야 한다.
새로운 트럭이 오른다는 것은 시간이 1초씩 흐른다는 것을 의미하고, 트럭을 내릴 때 한꺼번에 앞으로 트럭을 이동시켜야 하므로 시간 초를 잘 계산해야 될 것이다.
그 후 모두 내릴 수 있도록 조건을 걸어서 내리도록 해주었다.
정답코드
더보기
'''
'25. 11. 27.(목)
1. 일차선 다리에 트럭 여러 대가 지나가려고 함. (정해진 순으로 건너려 합니다)
2. 트럭이 최대 bridge_length 만큼 올라갈 수 있으며, weight까지는 버틸 수 있다.
단순 구현 문제..
'''
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
now_weight = 0
dq = deque()
i = 0
for idx, now_truck in enumerate(truck_weights):
#같이 태울 수 없음.
#현재 now_truck을 태울 때까지 얼만큼 전진하여 빼줘야 되는지 확인
while dq and now_weight + now_truck > weight:
pre_weight, ans = dq.popleft()#무게, 이전에 투입된 시간
now_weight -= pre_weight
out_time = bridge_length - (answer - ans)
#print(out_time)
answer += max(out_time - 1, 0)#젤 앞에 있는 아이가 앞으로 빠져나갈 시간
answer += 1
dq.append([now_truck, answer])#1번째 칸에 올려졌음.
now_weight += now_truck
i += 1
#print(answer, dq)
if dq:
answer += bridge_length - (answer - dq[-1][1])
return answer
깃허브 : https://buly.kr/AwgNM9e
유튜브 :
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / BFS / 미로 탈출 (0) | 2025.12.09 |
|---|---|
| 프로그래머스 / 구현 / 삼각 달팽이 (0) | 2025.11.30 |
| 프로그래머스 / 분할정복 / 쿼드압축 후 개수 세기 (0) | 2025.11.13 |
| 프로그래머스 / 슬라이딩 윈도우 / 두 큐 합 같게 만들기 (0) | 2025.11.12 |
| 프로그래머스 / 정렬 / 가장 큰 수 (0) | 2025.11.12 |