본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 파이썬 문제풀이 - 다리를 지나는 트럭

by whdgus928 2023. 5. 4.

첫 풀이

1.  다리길이의 리스트를 만든다

2. 한 칸씩 땡기며 무게가 가능하면 차를 올려준다

 

def solution(bridge_length, weight, truck_weights):
    answer=0
    bridge=[0 for _ in range(bridge_length)]
    while bridge:
        answer+=1
        bridge.pop(0)
        if truck_weights:
            if truck_weights[0]+sum(bridge)<=weight:
                bridge.append(truck_weights.pop(0))
            else:
                bridge.append(0)
    return answer

 

더 나은 답안

1. sum을 변수로 따로 관리해야한다

2. 리스트의 길이가 커질수록 연산이 늘어나게된다

 

def solution(bridge_length, weight, truck_weights):
    answer=0
    bridge=[0 for _ in range(bridge_length)]
    s=0
    while bridge:
        answer+=1
        tmp=bridge.pop(0)
        s-=tmp
        if truck_weights:
            if truck_weights[0]+s<=weight:
                tmp=truck_weights.pop(0)
                bridge.append(tmp)
                s+=tmp
            else:
                bridge.append(0)
    return answer

 

배운 점

1. 리스트가 크거나 sum을 계속 이용해야하는경우 변수로 따로 관리하면 연산시간을 줄일 수 있다

반응형

댓글