def solution(bridge_length, weight, truck_weights):
answer = 1
arrive = truck_weights.copy()
while len(arrive)!=0:
ing = []
truck_weights = arrive.copy()
for i in truck_weights:
if sum(ing)+i <= weight:
ing.append(i)
arrive.remove(i)
else:
break
answer+=(bridge_length+len(ing)-1)
print(ing, answer)
return answer
ing에 들어간 트럭이 하나 빠졌을 때 다음 트럭이 들어올 수 있다는 것을 간과함.
>> stack / que로 단순하게 풀어내는 것이 실수를 줄이는 방법일 듯 함
def solution(bridge_length, weight, truck_weights):
time = 0
bridge = [0] * bridge_length
while len(truck_weights)!=0:
time+=1
#미리 뺴주어야함 (1초가 지날 때마다 무조건 하나는 빠지므로)
bridge.pop(0)
#뺀 이후에 무엇을 넣을지만 고민하면 됨
#만약 sum(bridge) + truck <= weight면 넣어준다.
#sum함수에서 시간초과가 나니, 변수 설정하는것 필요! (5번 케이스)
if sum(bridge) + truck_weights[0] <= weight:
bridge.append(truck_weights.pop(0))
else: #아니면 0을 넣어줌
bridge.append(0)
#탈출 미리 했으니 후처리
#브릿지 큐에 방금 마지막 트럭이 들어갔으므로, 브릿지 길이만큼 더해줘야함.
time += bridge_length
return time
'코딩테스트 | python > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 | python] 전화번호 목록 (0) | 2024.02.06 |
|---|---|
| [프로그래머스 | python] 완주하지 못한 선수 (1) | 2024.02.06 |
| [프로그래머스 | python] 덧칠하기 (0) | 2023.10.20 |
| [프로그래머스 | python] 바탕화면 정리 (0) | 2023.10.20 |
| [프로그래머스 | python] 달리기 경주, 추억 점수 (0) | 2023.06.18 |