[프로그래머스] 다리를 지나는 트럭
Soyulia
2 min read
💡문제 분석 요약
-- 문제 --
입력 : bridge_length,weight, truck_weights
트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너기
bridge_length: 다리에 올라갈 수 있는 최대 트럭 수
weight : 다리가 견딜 수 있는 무게
다리에 완전히 오르지 않은 트럭의 무게는 무시
truck_weights: 트럭 별 무게
💡알고리즘 설계
함수를 이용하여 매개변수 입력
시간초기화, 다리 건너는 중인 리스트 생성
트럭 무게>0이면 대기중인 트럭이 존재한다는 의미로 반복문 시행
현재 다리무게와 weight비교시행
💡코드
def solution(bridge_length, weight, truck_weights):
time = 0
bridge=[0]*bridge_length
current_weight = 0
while truck_weights>0:
if current_weight - truck_weights[0]<=weight:
current_weight+=truck_weights[0]
bridge.append(truck_weights.popleft())
else:
bridge.append(0)
return answer
💡시간복잡도
O(N)
💡틀린 이유
접근 방식 단순함.
문제의 조건을 구현하는 능력이 떨어진다.
deque개념 부족
current_weight - truck_weights[0] / answer : 문제 이해 부족.
💡틀린 부분 수정 or 다른 풀이
from collections import deque
def solution(bridge_length, weight, truck_weights):
time = 0
bridge = deque([0] * bridge_length) # [0]*bridge_length 을 덱으로 변환
truck_weights = deque(truck_weights) # 리스트를 덱으로 변환
currentWeight = 0
while len(truck_weights) > 0:
time = time + 1
currentWeight = currentWeight - bridge.popleft()
if currentWeight + truck_weights[0] <= weight:
currentWeight = currentWeight + truck_weights[0]
bridge.append(truck_weights.popleft())
else:
bridge.append(0)
time = time + bridge_length
return time
💡느낀점 or 기억 할 정보
처음 코테를 접하다보니 접근하는데 어려움을 느낌. -> 문제 많이 접해보기.
개념만 공부하지 말고 기본 구현한 코드 많이 접해보기.
deque : 큐의 앞, 뒤에서 삽입, 삭제가 가능한 큐
💡from collections import deque문제 꼼꼼히 읽고 이해하고 코드 작성하기.
0
Subscribe to my newsletter
Read articles from Soyulia directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by