-
프로그래머스 Lv2 다리를 지나는 트럭Computer Science/프로그래머스 2023. 9. 24. 10:29
https://school.programmers.co.kr/learn/courses/30/lessons/42583
처음 코드를 보고, 현재 다리를 건널 수 있는 수만큼의 트럭을 큐에 넣고
큐에서 하나씩 빼가며 다리의 길이 만큼 시간 수를 누적 해 갔다.
이렇게 된다면 하나의 다리에 한개의 트럭만 다리를 건널 수 있는 거이므로 잘못된 풀이였다.
그렇다면 하나의 다리에 트럭을 여러대 올리는 것을 구현할려면 어떻게 해야 할까?
바로, 트럭을 다리를 건널 수 있는 만큼 큐에 넣고 가비지 값을 넣어주는 것이였다.
그리고 큐의 사이즈가 다리의 길이라면 트럭이 다리를 건넌 것이므로 pop()해주었다.
마지막 트럭이 다리를 건너는 것은 시작 인덱스가 벡터의 길이라면 전체 다리의 길이를 시간에 더해줘 해결했다.
#include <queue> #include <vector> using namespace std; int solution(int bridge_length, int weight, vector<int> truck_weights) { int answer = 0; int sum = 0; int start = 0; queue<int> que; while(1) { if(start == truck_weights.size()) { answer += bridge_length; return answer; } ++answer; if(que.size() == bridge_length) { sum -= que.front(); que.pop(); } int truck = truck_weights[start]; if(sum + truck <= weight) { sum += truck; ++start; que.push(truck); }else { que.push(0); } } return answer; }
'Computer Science > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 [3차]n진수 게임 (0) 2023.09.26 프로그래머스 Lv2 의상 (0) 2023.09.24 프로그래머스 Lv2 스택/큐 기능개발 (0) 2023.09.23 프로그래머스 Lv2 프로세스 (0) 2023.09.23 혼자하는 틱택토 (0) 2023.09.16