solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭 별 무게 truck_weights가 주어집니다. 이때 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 return 하도록 solution 함수를 완성하세요.제한 조건
- bridge_length는 1 이상 10,000 이하입니다.
- weight는 1 이상 10,000 이하입니다.
- truck_weights의 길이는 1 이상 10,000 이하입니다.
- 모든 트럭의 무게는 1 이상 weight 이하입니다.
def solution(bridge_length, weight, truck_weights):
time = 0
bridge = [] # 다리를 건너는 트럭의 무게
lenghth = [] # 다리를 건너는 트럭이 남은 시간
finish_bridge = [] # 넘어간 트럭 확인
while 1:
if lenghth: # 만약 다리를 건너는 자동차가 있다면
for j,mes in enumerate(lenghth):
lenghth[j] = mes -1
if (lenghth[0] == 0): # 트럭이 넘어갈 시간이 됐다면
del lenghth[0] #
del bridge[0] #
finish_bridge.append(1)
if truck_weights: # 만약 안건넌 트럭이 있다면
if len(bridge) <= bridge_length: # 만약 다리에 차가 꽉 안차있다면
if sum(bridge) + truck_weights[0] <= weight:
# 만약 넘어가야하는 차포함해서 다리 무게보다 가볍다면
bridge.append(truck_weights[0]) # 다리에 트럭 추가
del truck_weights[0] # 대기 트럭 제거
lenghth.append(bridge_length) # 트럭의 가야하는 남은 다리 길이 추가
time = time + 1 # 걸린시간
if not(truck_weights) and not(bridge): # 대기차량과 다리 위에 차가 없다면
break
return time
'2021 파이썬 챌린지' 카테고리의 다른 글
파이썬 챌린지가 종료 되었습니다 (0) | 2021.08.01 |
---|---|
2021.07.31 31일차 문제 (0) | 2021.07.31 |
2021.07 30 30일차 문제 예시답안 (0) | 2021.07.31 |
2021.07.30 30일차 문제 (0) | 2021.07.30 |
2021.07.29 29일차 문제 예시답안 (0) | 2021.07.30 |