import java.util.Queue; import java.util.LinkedList; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { // bridge_length : 다리에 올라갈 수 있는 최대 트럭 수 // weight : 다리가 견딜수 있는 무게 // truck_weights : 트럭 별 무게 Queue<Integer> bridge = new LinkedList<>(); int time = 0; // 총 걸린 시간 int bridgeWeight = 0; // 다리 위 총 무게 int idx = 0; // 현재 처리할 트럭 인덱스 // 초기 다리 상태: 다리 길이만큼 0으로 채움 for (int i = 0; i < bridge_length; i++) { bridge.offer(0); } while (idx < truck_weights.length) { time++; // 다리에서 트럭 한 대 내리기 bridgeWeight -= bridge.poll(); // 새로운 트럭 올릴 수 있다면 if (bridgeWeight + truck_weights[idx] <= weight) { // 다리에 추가 bridge.offer(truck_weights[idx]); // 무게 업데이트 bridgeWeight += truck_weights[idx]; // 다음 트럭 idx++; } else { // 무게 초과 시, 트럭을 못 올리고 빈 공간 채움 bridge.offer(0); } } // 마지막 트럭이 다리에서 완전히 빠져나가는 시간 추가 return time + bridge_length; } }
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #81303 : 표 편집 - JAVA (0) | 2025.04.05 |
---|---|
[ 프로그래머스 ] #42587 : 프로세스 - JAVA (1) | 2025.04.05 |
[ 프로그래머스 ] #64061 : 크레인 인형뽑기 게임 - JAVA (0) | 2025.04.02 |
[ 프로그래머스 ] #76502 : 괄호 회전하기 - JAVA (1) | 2025.03.31 |
[ etc ] #9 : 10진수를 2진수로 변환하기 - JAVA (0) | 2025.03.23 |