찬우의 이것저것 Chanwoo's blog

[프로그래머스 python] 다리를 지나는 트럭

https://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]))