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

Junyoung Park·2021년 12월 30일
0

코딩테스트

목록 보기
32/631

1. 문제 설명

다리를 지나는 트럭

2. 문제 분석

문제 설명이 다소 꼬여 있어서 헤맸지만, 테스트 케이스를 풀면서 bridge_length에 따라서 다리 위에서 머무는 시간(즉 큐에 들어와서 나갈 때까지)이 결정됨을 알 수 있었다. 다리, 즉 큐에 삽입될 수 있는 조건은 다음과 같다.

1. 대기 트럭이 있다.

2. 다리 위에 있는 모든 트럭 무게와 대기 트럭의 무게를 합친 게 용적 이하다.

3. 대기 트럭이 올라가도 최대 허용 트럭 수(bridge_length)를 초과하지 않는다.

이를 만족할 때 큐에 삽입 가능한데, 나의 경우 편리함을 위해 check라는 리스트를 함께 두면서 얼마 동안 다리 위에 있는지(실제로는 아마 다리 위를 주행하고 있겠지만) 확인했다. 본 문제에서 bridge_length를 통해 다리 위에 있는 최대 트럭 수와 다리를 빠져나가는 데 걸리는 시간을 모두 결정하다보니 (물론 현실 상에서는 그렇지 않고) 다소 헷갈렸던 것 같다.

3. 나의 풀이

def solution(bridge_length, weight, truck_weights):
    queue = [truck_weights.pop(0)]
    check = [0]
    total = 1

    while queue:
        total += 1
        if queue:
            for i in range(len(check)):
                check[i] += 1
            if check[0] == bridge_length:
                check.pop(0)
                queue.pop(0)

        if truck_weights and sum(queue) + truck_weights[0] <= weight and len(queue) < bridge_length:
            queue.append(truck_weights.pop(0))
            check.append(0)
    return total
  • check라는 외부 리스트를 두지 않고 queue만으로 들어온 시간을 0부터 세팅해서 하나씩 늘려가는 방법이 없을까?
profile
JUST DO IT

0개의 댓글