728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42583
풀이 (1차 시도)
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
queue = deque([0] * bridge_length)
while queue and truck_weights:
# popleft 시도
queue.popleft()
# sum 확인해서 새로운 truck 넣을 수 있는지 확인하기
if truck_weights and sum(queue) + truck_weights[0] <= weight:
truck = truck_weights.pop(0)
queue.append(truck)
else:
queue.append(0)
answer += 1
answer += len(queue)
return answer
2차 시도
sum() 연산을 매번 순회할 때마다 시행하는 것을 total_weight 라는 변수로 대체했다.
sum() 연산도 O(N) 일 것이므로 아래와 같이 수정하고 테스트 케이스 5번도 통과했다.
from collections import deque
def solution(bridge_length, weight, truck_weights):
answer = 0
queue = deque([0] * bridge_length)
total_weight = 0
while truck_weights:
total_weight -= queue.popleft()
# sum 확인해서 새로운 truck 넣을 수 있는지 확인하기
if total_weight + truck_weights[0] <= weight:
truck = truck_weights.pop(0)
total_weight += truck
queue.append(truck)
else:
queue.append(0)
answer += 1
answer += len(queue)
return answer
728x90
'Algorithm (PS)' 카테고리의 다른 글
[leetcode] top-k-frequent-words (Python3) (0) | 2024.06.02 |
---|---|
[day2] leetcode climbing stairs (0) | 2024.05.21 |
[day1] 자물쇠와 열쇠 (0) | 2024.05.20 |
[CodeTree] 코드트리 2달 유료 체험 사용후기 (1) | 2024.04.06 |
[Code Snippet] 격자 안에서 밀고 당기기 (0) | 2024.03.03 |