<문제 링크>
https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<정답 코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
from collections import deque
def solution(bridge_length, weight, truck_weights):
time = 0
current_weight = 0
on_bridge = deque([0] * bridge_length)
truck_weights = deque(truck_weights)
while len(truck_weights) != 0:
time += 1
# on_bridge에서 트럭이 나갈때마다 그 트럭 무게 current_weight에서 빼기
current_weight -= on_bridge.popleft()
"""새 트럭 진입 시도"""
# 새 트럭 수용 가능
if current_weight + truck_weights[0] <= weight:
current_weight += truck_weights[0]
# 새 트럭을 대기열(truck_weights)에서 제거, on_bridge에 추가
on_bridge.append(truck_weights.popleft())
# 새 트럭 수용 불가
else:
on_bridge.append(0) # on_bridge에 트럭 무게 대신 0 추가
# 모든 트럭이 다리를 완전히 벗어나기까지 걸리는 총 시간
time += bridge_length
return time
|
cs |
< 중요 포인트 >
- 다리 길이만큼의 list 생성 후 트럭 추가 가능하면 대기열에 있는 트럭 추가, 불가능하면 0 추가
- 모든 트럭이 다리를 벗어나는데 걸리는 시간을 계산해야 하므로 마지막에 다리 길이만큼 시간 추가(line 26)
'프로그래밍 > Python' 카테고리의 다른 글
백준_python 1463번 1로 만들기(BFS, DP) (0) | 2024.04.21 |
---|---|
프로그래머스_python lv2. 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS)) (1) | 2024.04.20 |
백준_python 1966번 프린터 큐(스택, 큐) (0) | 2024.04.17 |
백준_python 2108번 통계학(시간초과, collections.Counter 모듈) (0) | 2024.04.08 |
백준_python 1929번 소수 구하기(시간 초과, 에라토스테네스의 체) (1) | 2024.04.05 |