티스토리 뷰

꽤나 고생했는데 풀어내서 기분 좋다 ㅎㅋ

  • 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

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함