코딩테스트 | python/프로그래머스

[프로그래머스 | python] 다리를 지나는 트럭 >> 다시 풀어보기

iemxl 2024. 2. 6. 17:12

def solution(bridge_length, weight, truck_weights):
    answer = 1
    arrive = truck_weights.copy()
    
    while len(arrive)!=0:
        ing = []
        truck_weights = arrive.copy()
        for i in truck_weights:
            if sum(ing)+i <= weight:
                ing.append(i)
                arrive.remove(i)
            else:
                break
        answer+=(bridge_length+len(ing)-1)
        print(ing, answer)
    return answer

 

ing에 들어간 트럭이 하나 빠졌을 때 다음 트럭이 들어올 수 있다는 것을 간과함.

>> stack / que로 단순하게 풀어내는 것이 실수를 줄이는 방법일 듯 함

 

def solution(bridge_length, weight, truck_weights):
    time = 0
    bridge = [0] * bridge_length
    
    while len(truck_weights)!=0:
        time+=1
        #미리 뺴주어야함 (1초가 지날 때마다 무조건 하나는 빠지므로)
        bridge.pop(0)

        #뺀 이후에 무엇을 넣을지만 고민하면 됨
        #만약 sum(bridge) + truck <= weight면 넣어준다.
        #sum함수에서 시간초과가 나니, 변수 설정하는것 필요! (5번 케이스)
        if sum(bridge) + truck_weights[0] <= weight:
            bridge.append(truck_weights.pop(0))
        else: #아니면 0을 넣어줌
            bridge.append(0)
            
    #탈출 미리 했으니 후처리
    #브릿지 큐에 방금 마지막 트럭이 들어갔으므로, 브릿지 길이만큼 더해줘야함. 
    time += bridge_length
    
    return time