[프로그래머스 python] 다리를 지나는 트럭
2020-04-01https://programmers.co.kr/learn/courses/30/lessons/42583
다리 길이가 큐 사이즈고 큐에 넣을때 무게제한만 확인하고 넣고 무게제한 넘어갔을땐 0 넣고 시간마다 앞에서 하나씩 뽑으면 될거같은데 라고 생각하고 문제를 풀기 시작했따.
list 를 인덱스로 접근하려고 하다보니 out of range 에러가 많이 떠서 골치아팠다.
그러고나니 다리가 비어있는데도 차가 올라가지 않는 경우가 보여서 sum(br_q[1:])이런식으로 해결하려했더니
시간초과가 뜬다. 시간복잡도가 높은 연산을 반복문안에서 돌려대니.. 그래서 현재 무게를 추적하는 변수를 만들고
요리조리 돌려봤더니 성공했다..
다만 더 필요한것만 남겨두고 간단하게 줄일 여지가 보이는데 거기까진 하지 못하였다.
def solution(br_len, limit, trucks):
truck_len = len(trucks)
time = 0
phase = 0
br_q = [0] * br_len
curr_weight = 0
while truck_len + br_len > phase:
curr_weight -= br_q.pop(0)
if curr_weight + trucks[0] <= limit:
curr_weight += trucks[0]
br_q.append(trucks.pop(0))
trucks.append(0)
phase += 1
else:
br_q.append(0)
time += 1
print(time,phase,curr_weight,br_q)
return time
#print(solution(2, 10, [7, 4, 5, 6]))
# print(solution(100, 100, [10]))
# print(solution(100, 100, [10,10,10,10,10,10,10,10,10,10]))