상세 컨텐츠

본문 제목

[프로그래머스] 다리를 지나는 트럭

컴퓨터 공부/알고리즘

by 주중 (zuzung) 2022. 1. 4. 22:04

본문

1. 서론

쉬운 것 같은 문제였는데, 푸는데 시간이 오래걸렸다. 문제 풀이 시간을 단축해야 할 것 같다.

 

2. 문제 설명

3. 나의 풀이

문제를 풀다가 막혀서 하단의 이 사이트를 참고하여 작성했다.

 

4. 다른 사람의 풀이

import collections

DUMMY_TRUCK = 0


class Bridge(object):

    def __init__(self, length, weight):
        self._max_length = length
        self._max_weight = weight
        self._queue = collections.deque()
        self._current_weight = 0

    def push(self, truck):
        next_weight = self._current_weight + truck
        if next_weight <= self._max_weight and len(self._queue) < self._max_length:
            self._queue.append(truck)
            self._current_weight = next_weight
            return True
        else:
            return False

    def pop(self):
        item = self._queue.popleft()
        self._current_weight -= item
        return item

    def __len__(self):
        return len(self._queue)

    def __repr__(self):
        return 'Bridge({}/{} : [{}])'.format(self._current_weight, self._max_weight, list(self._queue))


def solution(bridge_length, weight, truck_weights):
    bridge = Bridge(bridge_length, weight)
    trucks = collections.deque(w for w in truck_weights)

    for _ in range(bridge_length):
        bridge.push(DUMMY_TRUCK)

    count = 0
    while trucks:
        bridge.pop()

        if bridge.push(trucks[0]):
            trucks.popleft()
        else:
            bridge.push(DUMMY_TRUCK)

        count += 1

    while bridge:
        bridge.pop()
        count += 1

    return count

클래스를 이용하여 실행하니 속도가 확연하게 단축되었다. 나의 문제 풀이는 테스트케이스 5번에서 거의 10000ms가 나왔는데 위의 코드로는 200ms 정도로 엄청나게 차이가 난다.

 

 

5. 결론

파이썬 클래스 공부도 해야겠다... 파이썬 클래스 공부 한 후 다시 복기하기로. 그리고 꼭 앞부분이 앞이라는 고정관념을 버리자.

 

 

 

문제 풀이 참고 사이트 링크: https://this-programmer.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Level2%ED%8C%8C%EC%9D%B4%EC%8D%AC3python3-%EB%8B%A4%EB%A6%AC%EB%A5%BC-%EC%A7%80%EB%82%98%EB%8A%94-%ED%8A%B8%EB%9F%AD

 

[프로그래머스/Level2/파이썬3(python3)] 다리를 지나는 트럭

[프로그래머스/Level2/파이썬3(python3)] 다리를 지나는 트럭 문제 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는

this-programmer.tistory.com

 

관련글 더보기

댓글 영역