Steps
1. 경과 시간(time)과 다리를 건너는 트럭 (queue)를 선언합니다.
2. 모든 트럭이 지나갈 때까지 반복합니다.
3. 대기 트럭이 0이라면(모든 트럭이 다리를 지나거나 다리를 건너는 중)
3-1 while문이 계속 진행되도록 pass 합니다.
4. 대기트럭의 가장 첫 트럭의 무게가 현재 다리 무게보다 작을 경우 다리를 건너도록 합니다.
4-1. 트럭이 다리위로 올라오면 그 무게만큼 weight를 빼줍니다.
4-2. 트럭이 다리에 올라온 시간을 튜플로 기록합니다.
5. 3번, 4번이 진행되면 time을 1 더합니다.
6. 다리를 건너는 트럭의 출발 시간과 현재 시간의 차이를 이용하여 트럭이 다리를 건너는 시간을 구합니다.
6-1 만약 출발 시간과 현재시간의 차이가 다리를 건너는 시간과 맞다면,
6-2 트럭은 다리를 다 지났으므로 다리의 무게에서 트럭의 무게를 다시 더하고, queue에서 뺍니다.
7. 대기 트럭과 다리를 건너는 트럭이 존재하지 않는다면,
7-1. 마지막 시간을 더해주고, 총 경과시간 time을 return 합니다.
코드 line 설명
def solution(bridge_length, weight, truck_weights):
# 경과 시간(time)과 다리를 건너는 트럭 (queue)를 선언합니다.
time = 0
queue = []
# 모든 트럭이 지나갈때까지 반복합니다.
while True :
# 대기 트럭이 0이라면(모든 트럭이 다리를 지나거나 다리를 건너는 중)
if len( truck_weights) ==0:
# 계속 진행되도록 pass합니다.
pass
# 대기트럭의 가장 첫 트럭의 무게가 현재 다리 무게보다 작을경우
# 다리를 건너도록 합니다.
elif weight >= truck_weights[0]:
# 트럭이 다리위로 올라오면 그 무게만큼 weight를 빼줍니다.
weight-= truck_weights[0]
# 트럭이 다리에 올라온 시간(출발 시간)을 기록합니다.
queue.append((truck_weights.pop(0),time))
time +=1
# 다리를 건너는 트럭의 출발 시간과 현재 시간의 차이를 이용하여
# 트럭이 다리를 건너는 시간을 구합니다.
for j in queue:
# 만약 출발 시간과 현재시간의 차이가 다리를 건너는 시간과 맞다면,
if time-j[1] ==bridge_length :
# 트럭은 다리를 다 지났으므로
# 다리의 무게에서 트럭의 무게를 다시 더하고, queue에서 뺍니다.
weight += j[0]
queue.remove(j)
# 대기 트럭과 다리를 건너는 트럭이 존재하지 않는다면,
if len( truck_weights) ==0 and len(queue) == 0:
# 마지막 시간을 더해주고, 총 경과시간 time을 return 합니다.
time +=1
return time
print(solution(2,10,[7,4,5,6]))
print(solution(100,100,[10]))
[out]
8
101
순수코드
def solution(bridge_length, weight, truck_weights):
time = 0
queue = []
while True :
if len( truck_weights) ==0:
pass
elif weight >= truck_weights[0]:
weight-= truck_weights[0]
queue.append((truck_weights.pop(0),time))
time +=1
for j in queue:
if time-j[1] ==bridge_length :
weight += j[0]
queue.remove(j)
if len( truck_weights) ==0 and len(queue) == 0:
time +=1
return time
print(solution(2,10,[7,4,5,6]))
print(solution(100,100,[10]))
[out]
8
101
새해 복 많이 받으세요 😊✨
'2021 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv.2 - 소수찾기 (Python) (0) | 2021.01.02 |
---|---|
[프로그래머스] Lv.2 - H-Index (Python) (0) | 2021.01.01 |
[프로그래머스] Lv.2 - 프린터 (Python) (0) | 2020.12.29 |
[프로그래머스] Lv.2 - 위장 (Python) (0) | 2020.12.29 |
[프로그래머스] Lv.1 - 실패율 (Python) (0) | 2020.12.29 |
댓글