프로그래머스 스택/큐 1.다리를 지나는 트럭 파이썬

Jamwon·2021년 4월 24일
0

알고리즘

목록 보기
4/18

문제링크

이러한 문제로 트럭들이 모두 지나는데 몇초가 걸리는지 구하는 문제이다.

다리를 '0'으로 채운 리스트를 만들어서 append와 pop을 이용해서 트럭을 지나가는 걸 구현해보았다.

def solution(bridge_length, weight, truck_weights):
    answer = 0

    list = [0]*bridge_length

    while list:  ##list가 존재할때까지
        answer += 1
        list.pop(0)
        print(list)
        if truck_weights: ##truck_weights가 존재할때까지
            if sum(list) + truck_weights[0] <= weight:
                list.append(truck_weights.pop(0))
                # print(list)

            else:
                list.append(0)
                # print(list)

    # print(answer)
    return answer

위를 보면 while list 와 if truck_weights 는 그 해당 list에 원소가 존재할때 true를 return 하고 원소가 list안에 없다면 false를 return 한다.

answer인 초를 1씩 더해주면서 1초가 지나면 list에 첫번째 원소를 pop해줍니다. (트럭이 다리를 지나가는 것을 구현) 그리고 트럭 list에서
sum(list) ->다리위에 있는 트럭들의 무게의합
truck_weights[0] 다리를 올라갈려는 트럭의 무게
를 더해서 다리의 최대하중보다 적다면 list 에 truck_weights[0]를 append해주는 동시에 pop해줍니다. 그리고 다리의 최대하중보다 크다면 list.append(0)를 해주어서 트럭이 지나가는 것을 구현합니다.

그렇게 truck_weights 리스트의 원소가 전부 pop되고 list 리스트의 원소도 전부 pop되면 트럭이 모두 이동 다리를 건넌 것이다!

while 이나 if list: 는 list에 원소가 있을시에 True 없을시에 False를 return 한다.

profile
한걸음씩 위로 자유롭게

0개의 댓글