💡문제 분석 요약
1. Queue 사용
2. 정해진 순으로
3. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있다.
4. 다리는 weight 이하까지의 무게를 견딜 수 있습니다.
5. 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다.
💡알고리즘 설계
1. 리스트로 설계
2. 1초가 지나면 빠지기 때문에 1을 미리 빼주기
3. sum(bridge) + truck <= weight 하면 추가
4. 아니면 0으로 설계
N만큼 queue에 요소 삽입
K번째인지 체크 후 삭제 및 삽입
큐의 마지막인 경우 다시 처음으로 돌아갈 것
💡코드
def solution(bridge_length, weight, truck_weights):
time = 0
bridge = [0] * bridge_length
while len(truck_weights)!=0:
time+=1
bridge.pop(0)
#5번 고려할 것
if sum(bridge) + truck_weights[0] <= weight:
bridge.append(truck_weights.pop(0))
else:
bridge.append(0)
time += bridge_length
return time
💡시간복잡도
O(N)
💡 틀린 이유
리스트로 구현하긴 했는데, 다른 사람들의 풀이를 보니 deque로 할 수 있을 듯 하다.
💡 틀린 부분 수정 or 다른 풀이
deque로 구현해볼 것
💡 느낀점 or 기억할정보
큐로 구현할 수 있는 것들은 리스트로 구현할 생각 말고 deque로 구현할 생각을 해보자 ..