티스토리 뷰
트럭이 한 대씩 다리를 지난다. 즉, 먼저 다리를 건너기 시작한 트럭이 무조건 먼저 다리를 빠져나간다.
Queue를 사용하면 간단하게 풀리는 문제이다.
처음엔 endPointer을 truck_weight 개수만큼 만들어 push와 pop을 구현하여 만들려고 시도했으나 for문 로직을 완전히 잘못 이해하여 좀 많이 허우적거렸다.
결국 돌고 돌아 LinkedList를 사용하는 JAVA 내부 Queue 클래스를 사용하여 문제를 풀었다.
트럭의 대수만큼 반복문을 돌리고 그 안에서 while문을 돌려 새로운 트럭이 다리를 건너기 시작하면, while을 빠져나와 다음 트럭을 확인하는 절차를 가진다.
반복문은 마지막 트럭이 다리에 올라가면 종료하므로, answer 은 다리의 길이만큼 증가시켜야 정답이 나온다.
Code:
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> bridgeQ = new LinkedList<Integer>();
int totalWeightOn = 0;
for (int i : truck_weights) {
while (true) {
if (bridgeQ.isEmpty()) {
bridgeQ.add(i);
totalWeightOn += i;
answer++;
break;
} else if (bridgeQ.size() == bridge_length) {
totalWeightOn -= bridgeQ.poll();
} else {
if (totalWeightOn + i <= weight) {
bridgeQ.add(i);
answer++;
totalWeightOn += i;
break;
} else {
bridgeQ.add(0);
answer++;
}
}
}
}
return answer + bridge_length;
}
}
반응형
'[JAVA] > Programmers' 카테고리의 다른 글
[JAVA] Programmers <Queue_LV2> 기능 개발 (0) | 2021.03.26 |
---|---|
[JAVA] Programmers <Stack_LV2> 주식 가격 (0) | 2021.03.25 |
[JAVA] Programmers <Hash_LV3> 베스트 앨범 (0) | 2021.03.25 |
[JAVA] Programmers <Hash_LV2> 위장 (0) | 2021.03.25 |
[JAVA] Programmers <Hash_LV2> 전화번호 목록 (0) | 2021.03.25 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- javascript
- 파니노구스토
- react-native
- 정보보안기사 #실기 #정리
- await
- AsyncStorage
- redux-thunk
- redux
- react
- Async
- Promise
- 인천 구월동 이탈리안 맛집
- 맛집
- 이탈리안 레스토랑
- 인천 구월동 맛집
- Total
- Today
- Yesterday