Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- Servlet
- 알고리즘
- 다이나믹 프로그래밍
- 양꼬치
- 문자열 압축
- 2839
- 맛집 투어
- 2589
- 프로그래머스
- 투어
- 2638
- 스프링
- 스프링 MVC
- BFS
- 포두부 보쌈
- 맛집
- dp
- 호유동
- 설탕 배달
- 2020 KAKAO BLIND
- 백준
- 1로 만들기
- Spring
- 서블릿
- 쓰레드 풀
- HTTP API
- mvc
- 동적 프로그래밍
- 고모네 콩탕
- 완도산회
Archives
- Today
- Total
프로그래밍 공방
[프로그래머스] 다리를 지나는 트럭 본문
문제
programmers.co.kr/learn/courses/30/lessons/42583
코딩테스트 연습 - 다리를 지나는 트럭
트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이
programmers.co.kr
문제해결방법
이 문제는 마지막 트럭이 들어가는 시간이 중요하다고 생각했다.
1. 시간 T를 증가시켜가며 큐에 트럭을 집어넣는다.
2. N번 트럭이 다리에 오를 때 다리가 견디는 무게를 초과하면 큐의 앞부터 N번 트럭이 올라갈 수 있을 때까지 트럭을 뺀다.
3. 트럭을 빼면서 트럭이 들어간 시간과 다리의 길이를 이용해서 트럭이 다리에서 나오는 시간을 계산한다.
4. 위에서 계산한 시간과 지금 트럭을 넣을 시간을 비교해서 위의 시간이 더 큰 경우에 현재 시간을 교체해준다.
5. 위 과정을 마지막 트럭을 넣을 때까지 반복한다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package Programmers; import java.util.LinkedList; import java.util.Queue; public class Solution_다리를지나는트럭 { public static int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; int curWeight = 0; Queue<int[]> q = new LinkedList<>(); q.add(new int[]{truck_weights[0], ++answer}); curWeight += truck_weights[0]; for(int i=1; i<truck_weights.length; i++) { while(weight<curWeight+truck_weights[i]) { int[] truck = q.poll(); curWeight-= truck[0]; answer = truck[1]+bridge_length-1; } q.add(new int[]{truck_weights[i], ++answer}); curWeight += truck_weights[i]; } while(!q.isEmpty()) answer = q.poll()[1] + bridge_length; return answer; } public static void main(String[] args) { int bridge_length = 100; int weight = 100; int[] truck_weights = {10,10,10,10,10,10,10,10,10,10}; System.out.println(solution(bridge_length, weight, truck_weights)); } } | cs |
코드에 대한 피드백이나 더 좋은 아이디어는 언제나 환영입니다.
'개발 > 문제해결' 카테고리의 다른 글
[프로그래머스] 자물쇠와 열쇠 (0) | 2020.11.22 |
---|---|
[백준] 20058번 : 마법사 상어와 파이어스톰 (0) | 2020.11.22 |
[프로그래머스] 추석 트래픽 (0) | 2020.11.22 |
[백준] 11722번 : 가장 긴 감소하는 부분 수열 (0) | 2020.11.21 |
[백준] 9436번 : Round Robin (0) | 2020.11.21 |