programming language/Structure

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

jellylucy 2021. 7. 29. 12:08

문제

입출력

문제 풀이

#include <string>
#include <vector>
#include <queue>
using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int answer = 0;
    queue <int> q;
    int sum = 0;//weight
    int idx = 0;
    while(1){
    
        if(idx == truck_weights.size()){
            answer += bridge_length;
            break;//?
        }
        answer++;//반복문이 한번 돌면 초가 지난다고 한다. 
        int tmp = truck_weights[idx];
        
        if(q.size()==bridge_length) {//넣기 전에 q의 크기 따지고 꽉 차있으면 빼기
            sum -= q.front(); //sum값에도 빼주기
            q.pop(); 
        }
        
        if(sum + tmp <= weight){   //넣을 수 있는지 확인
            q.push(tmp);
            sum += tmp;
            idx++;
        }
        else{
            q.push(0);
        }
        //들어간 7을 어떻게 이동시키지?
    }
    
    return answer;
}
//트럭 여러대가 일차선 다리를 정해진순으로 건너랴 합니다. 
//모든 트럭이 다리를 건너려면 몇 초가 걸리는지 알아내야 합니다.
//다리에는 트럭이 최대 다리길이만큼 올라갈 수 있고, 다리는 weight이하까지 견딜수있따. 
//다리에 완전히 오르지 않은 무게는 무시
//7kg가 들어가면 그것만 들어가는데 왜 2초가 걸릴까.