Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Git
- Eclipse
- kotlin
- Security
- error
- oracle
- 쿼리
- JavaScript
- Spring
- 생성
- aws
- JPA
- Java
- 에러
- 함수
- 방법
- 넥사크로
- Vue
- jquery
- 코틀린
- 스프링
- mybatis
- db
- 프로그래머스
- IntelliJ
- 오라클
- 시큐리티
- 자바
- GitHub
- 알고리즘
Archives
- Today
- Total
송민준의 개발노트
프로그래머스 다리를 지나는 트럭 본문
programmers.co.kr/learn/courses/30/lessons/42583
Truck이라는 클래스를 만들어서 접근
최초에는 Truck이 다리중량이 남는다면 동시에 여러대도 들어갈 수 있는 줄 알고 접근을 했다.
하지만 문제 예시를 보면
* 3 [7] [4] [5,6]
* 4 [7] [4,5] [6]
위와 같이 순서대로 4, 5가 들어가는 걸 볼 수가 있다.
import java.util.LinkedList;
import java.util.Queue;
public class TruckPassingTheBridge {
public int solution(int bridge_length, int weight, int[] truck_weights) {
// 대기트럭
Queue<Truck> waiting = new LinkedList<>();
// 다리
Queue<Truck> bridge = new LinkedList<>();
// 대기트럭 담음
for(int i = 0 ; i < truck_weights.length ; ++i){
waiting.offer(new Truck(truck_weights[i], 0));
}
int time = 0;
int totalWeight = 0;
// 대기트럭이 있거나 다리를 건너고 있으면 계속 실행
while(!waiting.isEmpty() || !bridge.isEmpty()){
// 시간은 항상 흐름
time++;
// 다리를 건너고 있다면
if(!bridge.isEmpty()) {
Truck t = bridge.peek();
// 현재시간에서 트럭의 출발시간 뺀 값이 브릿지길이보다 길거나 같다면 다리에서 제외
if(time - t.getPassTime() >= bridge_length) {
totalWeight -= t.getWeight();
bridge.poll();
}
}
// 대기차가 있다면
if(!waiting.isEmpty()) {
// 중량보다 현재 총중량+들어갈차례의 차량무게가 작거나 같다면
if(totalWeight + waiting.peek().getWeight() <= weight) {
// 트럭이 출발함(이 때 출발 시간은 트럭에 보관 -> 나중에 시간 비교해야함)
Truck t = waiting.poll();
totalWeight += t.getWeight();
bridge.offer(new Truck(t.getWeight(), time));
}
}
}
return time;
}
}
class Truck {
private int weight;
private int passTime;
public Truck(int weight, int passTime) {
this.weight = weight;
this.passTime = passTime;
}
int getWeight() {
return weight;
}
int getPassTime() {
return passTime;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 HIndex (0) | 2021.02.07 |
---|---|
프로그래머스 큰 수 만들기 (0) | 2021.02.04 |
프로그래머스 두 개 뽑아서 더하기 (0) | 2021.01.31 |
프로그래머스 - 스킬트리 (0) | 2021.01.29 |
프로그래머스 - 크레인 인형뽑기 게임(카카오) (0) | 2021.01.27 |