greenkang
그린 개발log
greenkang
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • 알고리즘 (20)
    • MySQL (0)
    • 생각 (0)
    • 컴퓨터구조 (6)
    • Spring · SpringBoot (1)
    • Java (1)
    • 장애 대응 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준7569 java
  • 백준 24479번 자바
  • 컴퓨터구조
  • 프로그래머스 거리두기 java
  • java
  • 프로그래머스 거리두기 자바
  • 어셈블리어
  • 백준7569
  • 장애 대응 회고
  • 자바
  • 백준
  • 프로그래머스
  • 백준 1065번 자바
  • 파이썬
  • python
  • TOPCODER알고리즘트레이닝
  • 41. First Missing Positive
  • 알고리즘
  • 백준 17265번
  • 리트코드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
greenkang

그린 개발log

알고리즘

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

2022. 8. 8. 22:50

[풀이방법]

1. 대기중인 트럭이 순서대로 들어있는 큐 wait 생성 = 대기중인 트럭

2. 다리의 길이만큼 0이 들어있는 큐 bridge 생성 = 다리위 트럭

3. 다리위의 트럭이 모두 나갈 때까지 다음을 반복

    3-1) 시간++

    3-2) 다리위의 트럭을 하나 빠져나가게함 (만약 트럭이 없다면 0이 빠져나감)

             -> 현재 다리위 트럭무게 = 다리위의 트럭무게 - 빠져나간 트럭 무게

    3-3) 대기중인 트럭이 존재할 경우 트럭을 더 올릴 수 있으면 다음 트럭을, 아니면 0을 추가

             -> 현재 다리위 트럭무게 = 다리위의 트럭무게 + 올린 트럭 무게 

 

[풀이코드_Java]

import java.util.LinkedList;
import java.util.Queue;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        
        Queue<Integer> wait = new LinkedList<>();  // 대기트럭
        for (int truck: truck_weights) {
            wait.add(truck);
        }
        
        Queue<Integer> bridge = new LinkedList<>(); // 다리 위 트럭
        for (int i = 0; i < bridge_length; i++) {
            bridge.add(0);
        }
        
        
        int time = 0, totWeight = 0;
        while (!bridge.isEmpty()) {
            time++;
            
            int out = bridge.poll();   // 다리를 빠져나감 (out)
            totWeight -= out;
            if (!wait.isEmpty()) {     // 다리에 올라감 (in)
                
                int in = 0;           // default값 0으로 설정
                if ( (totWeight + wait.peek()) <= weight )
                    in = wait.poll(); // 더 올릴 수 있으면 올림
                bridge.add(in);
                totWeight += in;
                
            }
        }
        
        return time;
    }
}

'알고리즘' 카테고리의 다른 글

[TOPCODER 05.전체탐색] 09. 마법의 숫자  (0) 2022.10.23
[TOPCODER 알고리즘 트레이닝] 07. 고장난 로봇  (0) 2022.08.29
[백준] 1065번 한수  (0) 2022.07.30
[백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1  (0) 2022.07.26
[프로그래머스] 거리두기 확인하기  (0) 2022.07.25
    '알고리즘' 카테고리의 다른 글
    • [TOPCODER 05.전체탐색] 09. 마법의 숫자
    • [TOPCODER 알고리즘 트레이닝] 07. 고장난 로봇
    • [백준] 1065번 한수
    • [백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1
    greenkang
    greenkang

    티스토리툴바