평범한 필기장

[Programmers_Python] 다리를 지나는 트럭 본문

코딩 테스트 준비/Programmers

[Programmers_Python] 다리를 지나는 트럭

junseok-rh 2023. 5. 2. 15:51

https://school.programmers.co.kr/learn/courses/30/lessons/42583

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

틀린 이유

 나는 다리 위에 있는 트럭 무게들을 나타내는 리스트의 고정하지 않는 방식을 했다. 그러다 보니 리스트 인덱스 오류가 자주 발생했고, 그러다보니 어렵게 해결하려 한 것 같다.

 

정답 풀이

 다른 분들이 푼 방식을 보니 다리 위 트럭 무게 리스트를 [0 for _ in range(bridge_length)] 형태의 리스트로 길이를 고정시키고 문제를 풀었다.

  1. 몇초가 흘렀는지 체크하기 위해 answer = 0으로 두고 다리 위 트럭 무게를 [0 for _ in range(bridge_length)]로 초기화
  2. 매 반복마다 answer += 1로 해주면서 시간을 체크하고 bridge의 0번째 원소를 pop
  3. bridge위의 무게가 weight보다 작으면 bridge에 truck_weights.pop(0)를 append
  4. weight보다 크면 bridge에 0을 append
  5. 3, 4번을 truck_weights에 원소가 있으면 수행하고 bridge에 원소가 있는 동안 계속 반복.
def solution(bridge_length, weight, truck_weights):
    
    answer = 0
    bridge = [0 for _ in range(bridge_length)]
    
    while bridge:
        
        answer += 1
        bridge.pop(0)
        
        if truck_weights:
            if sum(bridge) + truck_weights[0] <= weight:            
                t = truck_weights.pop(0)
                bridge.append(t)
            else:
                bridge.append(0)
                 
    return answer

 

이번 문제는 bridge의 길이를 고정해서 한다는 생각을 못해서 너무 복잡하게 풀려고 하다보니 못 푼 것 같다,,,ㅜㅜ