티스토리 뷰
꽤나 고생했는데 풀어내서 기분 좋다 ㅎㅋ
-
return 값이 답보다 자꾸 작게 나와서 디버깅 해보니!!
-
wating
리스트가 비면 현재 시간cur
을 return하라고 짰더니, 아직 다리를 건너고 있는 트럭이 다 건너지 못해도 return해버려서 그렇다. -
따라서
waiting
리스트가 비더라도,time
리스트의 모든 값이bridge_length
를 넘겨야cur + 1
를 return하도록 코드를 수정하니 정답!! -
cur + 1
를 리턴한 이유는, 다 건넜을 때 + 1초 후에 트럭이 다리를 완전히 빠져 나가는 시간이기 때문이다.
from collections import deque
def solution(bridge_length, weight, truck_weights):
waiting = deque(truck_weights) # 대기중인 트럭들
time = deque() # 건너는 시간
ing = deque() # 건너는 중
cur = 0
while True:
cur += 1
truck = waiting[0]
if (sum(ing) + truck) <= weight:
ing.append(truck)
time.append(0)
waiting.popleft()
print("경과시간 ", cur)
print("waiting ", waiting)
print("ing ", ing)
d = []
for i in range(len(time)):
time[i] += 1 # 1초씩 더해준다.
if time[i] == bridge_length:
d.append(i)
print("time ", time)
print("===================")
for i in d:
del time[i]
del ing[i]
if len(waiting) == 0:
while any(t < bridge_length for t in time):
cur += 1
for i in range(len(time)):
time[i] += 1
print("return cur", cur)
print("return time ", time)
return cur+1
'코딩테스트' 카테고리의 다른 글
프로그래머스 level 1 - 소수찾기 (연습문제), level 2 - 소수찾기 (완전탐색) / 에라토스테네스의 체 이용 (0) | 2020.09.13 |
---|---|
인프런 - 코딩테스트 강의 Section 7. 깊이, 넓이 우선탐색 활용 (0) | 2020.09.11 |
댓글