[알고리즘] 스택(Stack) 프로그래머스 2단계 - 다리를 지나는 트럭

minidoo·2020년 9월 13일
0

알고리즘

목록 보기
11/85
post-thumbnail

참고 코드

def solution(bridge_length, weight, truck_weights):
    
    time = 0
    bridge = [0] * bridge_length
    
    while bridge:
        time += 1
        bridge.pop(0)
        
        if truck_weights:
            if sum(bridge) + truck_weights[0] <= weight:
                bridge.append(truck_weights.pop(0))
            else:
                bridge.append(0)
    
    
    return time

풀이과정

  1. bridge에 다리의 길이만큼 0으로 채워넣는다.
  2. 배열의 개수가 있을 동안 while로 반복문을 넣는다.
  3. 반복문이 한번 돌때마다 시간이 증가하므로 time에 1을 더해주고, bridge의 첫 번째 인덱스를 pop한다.
  4. 만약 stack에 있는 합과 truck_weight의 첫 번째 인덱스의 합이 weight를 넘지 않는다면, bridge에 인덱스 값을 넣어준다.
  5. 그 외에는 bridge에 0을 넣어준다.

새로 배운 내용

while 배열

'배열의 길이 > 0' 동안 반복한다.

temp = [ 1, 2, 3 ]
i = 0

while temp:
  print(temp[0])
  temp.pop(0)

<output>
1
2
3

0개의 댓글