[프로그래머스] 다리를 지나는 트럭 (Queue)

2025. 5. 19. 12:30·Algorithm/Coding Test Records

문제 소개

오늘 풀었던 프로그래머스 - 다리를 지나는 트럭 문제를 정리합니다.

이 문제는 여러 트럭이 무게 제한과 길이 제한이 있는 다리를 지나가는 상황에서, 모든 트럭이 다리를 건너는 데 걸리는 최소 시간을 계산하는 문제입니다.

문제 링크: 다리를 지나는 트럭 - 프로그래머스


문제 접근 방식

이 문제는 다음과 같은 시뮬레이션으로 해결할 수 있습니다:

  1. 다리를 bridge_length 길이의 큐로 구현
  2. 매초마다 큐를 한 칸 밀고, 새로운 트럭을 올릴지 결정
  3. 올릴 수 있는 조건:
    • 큐의 합 + 대기 중인 트럭 무게 ≤ weight
  4. 큐의 맨 앞 요소는 다리를 지난 트럭 (무게를 빼야 함)
  5. 모든 트럭이 지나갈 때까지 시간 증가시켜가며 반복

해결 과정 및 코드

핵심 아이디어

  1. 다리를 무게 제한이 있는 슬라이딩 큐로 보고,
  2. 매초마다 트럭을 한 칸씩 전진시키는 방식
  3. 트럭을 못 올리는 경우에도 다리를 빈칸(0)으로 채워야 함

코드

시간 복잡도 : O(N)

import java.util.*;
class Solution {
    public static int solution(int bridge_length, int weight, int[] truck_weights) {
        ArrayDeque<Integer> bridge = new ArrayDeque<>();
        int time = 0;
        int totalWeight = 0;
        int i = 0;

        // 초기 다리 상태: 0으로 채움
        for (int j = 0; j < bridge_length; j++) {
            bridge.offer(0);
        }

        while (!bridge.isEmpty()) {
            time++; // 1초 경과
            totalWeight -= bridge.poll(); // 한 칸 앞으로 이동하며 맨 앞 트럭 제거

            if (i < truck_weights.length) {
                if (totalWeight + truck_weights[i] <= weight) {
                    bridge.offer(truck_weights[i]);
                    totalWeight += truck_weights[i];
                    i++; // 다음 트럭으로 이동
                } else {
                    bridge.offer(0); // 트럭을 못 올리는 경우 빈 공간 (0) 추가
                }
            }
        }

        return time;
    }
}

'Algorithm > Coding Test Records' 카테고리의 다른 글

[프로그래머스] 게임 맵 최단거리 (BFS)  (0) 2025.05.22
[프로그래머스] 주식가격 (Stack)  (0) 2025.05.20
[프로그래머스] 프로세스 (Queue)  (1) 2025.05.18
[프로그래머스] 올바른 괄호 (시뮬레이션)  (0) 2025.05.17
[프로그래머스] 기능개발 (시뮬레이션)  (0) 2025.05.16
'Algorithm/Coding Test Records' 카테고리의 다른 글
  • [프로그래머스] 게임 맵 최단거리 (BFS)
  • [프로그래머스] 주식가격 (Stack)
  • [프로그래머스] 프로세스 (Queue)
  • [프로그래머스] 올바른 괄호 (시뮬레이션)
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    문법정리
    java
    boostcamp
    Kotlin
    백준
    Level2
    프로그래머스
    greedy
    알고리즘고득점kit
    시뮬레이션
    Level3
    코테
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
[프로그래머스] 다리를 지나는 트럭 (Queue)
상단으로

티스토리툴바