반응형
이번 문제는 ‘다리를 지나는 트럭’이다.
처음 푸는 문제라 과거 코드는 없다.
스택과 큐 휴휴 많이 안써봐서 잘 풀릴지 모르겠다
그래도 일단 도전!
코드
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
Queue<Integer> bridge = new LinkedList<>();
int currentWeight = 0;
int time = 0;
int index = 0;
for(int i = 0; i < bridge_length; i++) {
bridge.offer(0);
}
while(!bridge.isEmpty()) {
time++;
currentWeight -= bridge.poll();
if(index < truck_weights.length) {
if(currentWeight + truck_weights[index] <= weight) {
bridge.offer(truck_weights[index]);
currentWeight += truck_weights[index];
index++;
}
else {
bridge.offer(0);
}
}
}
return time;
}
}
열심히 풀어보다가 1번 테케는 통과했는데 2번부터 만신창이길래 뭐지하고 봤는데
아.. 지문이 헷갈릴만한 요소들이 많아서 제대로 풀리지가 않았던 거였다.
bridge_length가.. 다리에 올라가는 최대 트럭 갯수인 줄 알았는데........
진짜 다리의 길이를 나타내고, 트럭은 다리를 한 칸씩 움직일 수 있으며, 움직일 때마다 1초가 걸린다.
이런 내용이 지문에 하나도 없어 몇 시간을 삽질했다.
한 번 엉키기 시작하니 제대로 지문을 해석해도 코드로 안나와 답답해서 그냥 답을 봤다.
이번 코드의 핵심은 다리의 길이를 유지하고, 트럭들이 지나가는 부분을 어떻게 체크할 건지가 중점인 것 같다.
그래서 다리를 일단 0으로 채워넣고, 다리가 다 없어질 때까지 반복하면 총 시간을 잘 캐치할 수 있다.
이거랑 비슷한 문제 하나 더 풀어봐야지..
오늘도 즐거운 코딩..
반응형