import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 1;
Queue<Data> q = new LinkedList<>();
int num = 0;
for (int i = 0; i < truck_weights.length; i++) {
while (truck_weights[i] > weight || num == bridge_length) {
Data d = q.poll();
answer = d.time;
weight += d.weight;
num--;
}
if (i == truck_weights.length - 1) {
answer += bridge_length;
break;
}
q.offer(new Data(truck_weights[i], answer + bridge_length));
weight -= truck_weights[i];
num++;
answer++;
}
return answer;
}
}
class Data {
int weight;
int time;
Data(int weight, int time) {
this.weight = weight;
this.time = time;
}
}
처음에 단순히 트럭이 다리를 건너는데 걸리는 시간을 생각하지 못하고 짜다가 막혔다.
스택/큐 문제만 보면 뭔가 수학적으로 풀려는 것 같다.
나중에 다시 도전해봐야겠다.
코드를 짜보았으나 3분의 1이 실패가 떴다.
또 무슨 예외상황을 놓친걸까..
질문하기에서 다른 사람이 올려준 테스트 케이스를 참고하여 해결했다.
예외상황은 항상 생각하기 어려운것같다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges