문제

내가 작성한 코드 (틀림; 참고 블로그보고 작성함)
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
trucks_on_bridge = [0] * bridge_length
truck_weights = deque(truck_weights)
while len(trucks_on_bridge):
answer += 1
trucks_on_bridge.pop(0)
if truck_weights:
if sum(trucks_on_bridge) + truck_weights[0] <= weight:
trucks_on_bridge.append(deque.popleft(truck_weights))
else:
trucks_on_bridge.append(0)
return answer
코드 설명
from collections import deque
> '큐'를 이용하기 위해서 deque 라이브러리를 볼러옴
def solution(bridge_length, weight, truck_weights):
answer = 0
trucks_on_bridge = [0] * bridge_length
truck_weights = deque(truck_weights)
while len(trucks_on_bridge):
answer += 1
trucks_on_bridge.pop(0)
if truck_weights:
if sum(trucks_on_bridge) + truck_weights[0] <= weight:
trucks_on_bridge.append(deque.popleft(truck_weights))
else:
trucks_on_bridge.append(0)
return answer
> trucks_on_bridge 변수는 bridge_length(다리 길이)만큼 0을 갖는 리스트 변수입니다.
> truck_weights 변수는 선입선출하기 위해서 deque() 함수를 적용하였습니다.
> while문을 사용하여 trucks_on_bridge 변수에 값이 없을 때까지 반복문을 진행시켰습니다.
> 진행 시마다 answer += 1을 시켜 시간을 구했습니다.
> trucks_on_bridge 변수에 pop(0)을 하여 변수에 맨 앞에 있는 값을 제거했습니다.
> if문을 적용하여 trucks_on_bridge 의 ㅎ바과 truck_weights의 맨 앞에 값을 합하여 weight(다리가 견딜 수 있는 무게)보다 적으면 trucks_on_bridge 변수에 그 값을 append 시켰습니다.
> 그렇지 않으면 0을 append 했습니다.
> 참고를 보면 쉽게 풀수 있는데 왜 혼자 하려면 생각이 안나는지... ㅜㅜ
참고 블로그
[프로그래머스] 다리를 지나는 트럭 - PYTHON
[프로그래머스] 다리를 지나는 트럭 - PYTHON
velog.io
'Coding > 프로그래머스' 카테고리의 다른 글
| [해시] 포켓몬 with Python (0) | 2022.07.22 |
|---|---|
| [탐욕법] 구명보트 (★) (0) | 2022.07.21 |
| [2020 KAKAO BLIND RECRUITMENT] 문자열 압축 (★) (0) | 2022.07.21 |
| [해시] 위장 (★) (0) | 2022.07.21 |
| [2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 with Python(★) (0) | 2022.07.18 |