[Python] 프로그래머스 / 스택/큐 / 다리를 지나는 트럭
2024. 3. 9. 08:22ㆍCoding Test/Python
https://school.programmers.co.kr/learn/courses/30/lessons/42583#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(bridge_length, weight, truck_weights):
time = 0
# 다리를 건너는 트럭
bridge = [0 for _ in range(bridge_length)]
while bridge :
time += 1
bridge.pop(0)
if truck_weights:
# bridge와 다음 truck의 무게가 weight를 넘지않으면 추가
if sum(bridge) + truck_weights[0] <= weight:
pass_truck = truck_weights.pop(0)
bridge.append(pass_truck)
else:
bridge.append(0)
return time
이렇게 할 경우 sum()으로 인해 시간초과가 발생한다.
그래서 변수를 하나 더 두고 빼는 방식을 사용해야 함!
def solution(bridge_length, weight, truck_weights):
time = 0
# 다리를 건너는 트럭
bridge = [0 for _ in range(bridge_length)]
bridge_weight = 0
while bridge :
time += 1
out_truck = bridge.pop(0)
bridge_weight -= out_truck
if truck_weights:
# bridge weight와 다음 truck의 무게가 weight를 넘지않으면 추가
if bridge_weight + truck_weights[0] <= weight:
pass_truck = truck_weights.pop(0)
bridge.append(pass_truck)
bridge_weight += pass_truck
else:
bridge.append(0)
return time
bridge.append(0)을 함으로써 bridge_length만큼 time이 자동으로 추가된다!
'Coding Test > Python' 카테고리의 다른 글
| 그리디(Greedy) 정리 (0) | 2024.03.12 |
|---|---|
| [Python] 프로그래머스 / 스택/큐 / 주식가격 / 리스트 숫자 비교 (0) | 2024.03.09 |
| [Python] 프로그래머스 / 스택/큐 / 프로세스 / any() (0) | 2024.03.06 |
| [Python] 프로그래머스 / 정렬 / 가장 큰 수 / 숫자형 리스트 단일 값으로 병합 (0) | 2024.03.06 |
| [Python] 프로그래머스 / 스택/큐 / 올바른 괄호 / pop() / stack (0) | 2024.03.05 |