Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 가장 큰 수
- 더 맵게
- 깊이우선탐색
- browser workflow
- 넓이우선탐색
- Queue
- react-native-navigation
- 완주하지 못한 선수
- heap
- 주식
- 기능개발
- 다리를 지나는 트럭
- hash
- 이중우선순위큐
- Stack
- 타겟 넘버
- 디스크 컨트롤러
- Javascript
- Data Structure
- react-native
- sorting
- 소수찾기
- Programmers
- 전화번호 목록
- Virtual DOM
- react-native bind
- react
- k번째수
- Algorithm
- Brute Force
Archives
- Today
- Total
개발 블로그
[프로그래머스/Javascript/Queue] 다리를 지나는 트럭 본문
1. 서론
위 문제는 스택 / 큐로 분류로 분류되어 있으며, 큐를 이용해 문제를 풀었다.
2. 문제설명(출처: programmers.co.kr/learn/courses/30/lessons/42583)
3. 문제풀이
1) 문제에서 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 라고 하였으니 트럭이 다리에 올라갔을 때, 트럭을 queue에 넣고 트럭이 지나갔다면 queue에서 빼는 방식을 사용한다.
2) 우선 현재 다리에 트럭이 있는지 확인한다. 다리에 트럭이 있다면 트럭이 다리를 얼마나 지났는지 확인한다. 만약 다리를 모두 건넜다면, 다리에 걸리는 하중에서 해당 트럭의 무게를 빼준다.
3) 현재 다리 위에 있는 모든 트럭의 시간을 +1 해준다.
4) 현재 다리 위에 걸린 하중 + 새로운 트럭의 무게를 다리가 견딜 수 있다면 하중에 새로운 트럭의 무게를 더해준다.
5) 위의 과정을 모든 트럭이 건널때까지 반복한다.
4. 결과 코드
function solution(bridge_length, weight, truck_weights) {
var answer = 0;
var num_trucks = truck_weights.length;
var on_board = []
var passed = []
var sum = 0;
while(num_trucks > passed.length){
if(on_board.length){
if(on_board[0][1] >= bridge_length){
sum -= on_board[0][0]
passed.push(on_board.shift()[0])
}
for(let truck of on_board){
truck[1] += 1
}
}
if(sum + truck_weights[0] <= weight){
sum += truck_weights[0]
on_board.push([truck_weights.shift(), 1])
}
answer++;
}
return answer;
}
'IT > Programmers' 카테고리의 다른 글
[프로그래머스/Javascript/Stack+Queue] 기능개발 (0) | 2021.04.06 |
---|---|
[프로그래머스/Javascript/Stack] 주식가격 (0) | 2021.04.06 |
[프로그래머스/python/Heap] 더 맵게 (0) | 2021.04.05 |
[프로그래머스/Javascript/Heap] 이중우선순위큐 (0) | 2021.04.04 |
[프로그래머스/Javascript/Heap] 디스크 컨트롤러 (0) | 2021.04.04 |