반응형
프로그래머스 - [Level 2] 다리를 지나는 트럭
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석
- 트럭 여러 대가 강을 가로질러 가야한다.
- 정해진 순서대로 건너야한다.
- 다리의 길이와 다리가 견딜 수 있는 무게가 주어진다.
- 다리의 길이 만큼 트럭이 올라올 수 있다.
- 다리를 다 건너는데, 다리의 길이만큼의 시간이 걸린다.
- 다리의 길이와 다리가 견딜 수 있는 무게, 그리고 트럭 리스트가 주어졌을 때 다리를 건너는데 걸리는 최소 시간을 반환해라.
해결 키 포인트
- 스택/큐 사용
- 다리에 더 이상 트럭이 올라갈 수 없을 경우, 큐에 0 삽입 (없는 무게)
- 트럭이 올라갈 수 있을 때
- 큐에 해당 트럭 무게 삽입
- 현재 다리 위에 올라가 있는 무게 해당 무게만큼 증가
- 큐의 길이가 다리의 길이와 동일할 경우, 큐에서 하나 빼기 (다리를 모두 건너왔음을 의미)
- 해당 반복을 마지막 트럭이 다리 위에 올라 갔을 때까지 반복
- 반복하면서 answer 증가
- 반환 값 : answer + bridge_length
코드
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
int sumWeight = 0;
Queue<Integer> queue = new LinkedList<>();
int index = 0;
while(index < truck_weights.length) {
if(queue.size()+1 > bridge_length) {
sumWeight -= queue.poll();
}
if(sumWeight+truck_weights[index] > weight) {
queue.add(0);
}
else {
sumWeight += truck_weights[index];
queue.add(truck_weights[index]);
index++;
}
answer++;
}
return answer+bridge_length;
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[프로그래머스] 주식가격 (JAVA) (0) | 2024.02.26 |
---|---|
[백준 2206] 벽 부수고 이동하기(JAVA) (2) | 2024.02.22 |
[백준 1238] 파티(JAVA) (1) | 2024.02.11 |
[백준 11404] 플로이드(JAVA) (1) | 2024.02.11 |
[백준 9663] N-Queen(JAVA) (1) | 2024.02.11 |