쉬운 것 같은 문제였는데, 푸는데 시간이 오래걸렸다. 문제 풀이 시간을 단축해야 할 것 같다.
문제를 풀다가 막혀서 하단의 이 사이트를 참고하여 작성했다.
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 정도로 엄청나게 차이가 난다.
파이썬 클래스 공부도 해야겠다... 파이썬 클래스 공부 한 후 다시 복기하기로. 그리고 꼭 앞부분이 앞이라는 고정관념을 버리자.
JAVA에서 parseInt()와 valueOf()의 차이점 (0) | 2022.04.12 |
---|---|
앞으로 코딩테스트 언어를 파이썬 -> 자바로 변경할 것이다. (0) | 2022.04.12 |
[프로그래머스] 입국심사 (0) | 2022.01.03 |
[프로그래머스] 영어 끝말잇기 (0) | 2022.01.02 |
[프로그래머스] 가운데 글자 가져오기 (0) | 2022.01.02 |
댓글 영역