https://school.programmers.co.kr/learn/courses/30/lessons/42583
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
/*
현재 다리 위의 트럭 무게인 int now
birde_length 크기의 큐 queue
큐가 꽉찼다면 pop 한다.
weight 와 now 를 비교해서 큐에 넣을 수 있으면 넣고, 아니면 0을 넣는다.
*/
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
int now = 0;
Queue<Integer> queue = new LinkedList<>();
for(int i=0; i<truck_weights.length; i++){
if(queue.size()>=bridge_length){
now -= queue.poll();
}
if(truck_weights[i]+now <= weight){
queue.add(truck_weights[i]);
now+=truck_weights[i];
}
else{
queue.add(0);
i--;
}
answer++;
}
while(queue.size()<bridge_length){
queue.add(0);
}
while(!queue.isEmpty()){
queue.poll();
answer++;
}
return answer;
}
}
큐를 다리라고 생각한다.
현재 다리위의 무게를 now 로 두고 트럭이 들어갈 수 있다면 트럭을 넣고 아니면 0을 넣으면서 시간(answer)을 증가한다.
모든 트럭이 다 들어간 순간부터는 해당 트럭이 다리 길이만큼 지나가야되므로 0으로 남은 거리만큼 채운다.
큐를 비우면서 시간(answer)를 증가한다.
44분 정도 소요되었다.
'알고리즘' 카테고리의 다른 글
| DFS, BFS 문제 (이코테) (0) | 2023.04.16 |
|---|---|
| [프로그래머스] 성격 유형 검사하기 / JAVA / 2022 카카오 인턴 (0) | 2022.11.23 |
| [프로그래머스] 삼각형의 완성조건 (2) / java (0) | 2022.11.01 |
