Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=java
풀이
나의 풀이
- 문제 가독성이 조금 떨어져서 이해하는데 시간이 걸렸다.
- truck_weights 배열을 순회함으로써 개별 트럭에 대한 반복문을 실행한다.
- 만약 현재 다리(큐)에 아무 트럭도 올라가 있지 않으면 트럭을 올리고 sum(다리 위에 올라온 트럭의 총 무게)에 누적하고 answer(소요 시간)을 증가 시킨다.
- 이후 두 가지의 경우의 수로 나뉜다.
1) 다리의 가용 무게가 가득 차서 트럭이 더 이상 올라가지 못하는 경우
2) 다리의 가용 무게가 남아 트럭이 더 올라가는 경우
- 1)의 경우 '0'을 큐에 추가하여 큐의 자리를 차지(=트럭이 앞으로 움직이는 것을 구현)하도록 한다.
- 2)의 경우 이전과 동일하게 트럭을 올리고 sum에 누적한 뒤 answer(소요 시간)을 증가 시킨다.
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int sum = 0;
int answer = 0;
Queue<Integer> que = new LinkedList<>();
for(int t : truck_weights) {
while(true) {
if(que.isEmpty()) {
que.offer(t);
sum += t;
answer++;
break;
} else if(que.size() == bridge_length) {
sum -= que.poll();
} else {
if(weight < sum+t) {
que.offer(0);
answer++;
} else {
que.offer(t);
sum += t;
answer++;
break;
}
}
}
}
return answer+bridge_length;
}
}
'Dev > PS' 카테고리의 다른 글
[프로그래머스-코딩테스트 연습] 더 맵게 (2) | 2023.12.05 |
---|---|
[프로그래머스-코딩테스트 연습] 주식가격 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 프로세스 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 올바른 괄호 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 기능개발 (0) | 2023.12.05 |