프로그래머스 LEVEL 2(다리를 지나는 트럭)
-
사용 언어 : javascript
-
해결 날짜 : 2022-10-12
- 해결 방법 :
- 다리를 지나는 과정을 표현할 bridge 0으로 초기화
- while문 반복 시(반복 한 번당 1초를 의미) bridge의 최상단 pop()
- 다리가 최대 견딜 수 있는 무게가 현재 지날 트럭의 무게와 현재 다리의 무게의 합보다 크거나 같으면 현재 지날 트럭을 bridge에 unshift() 및 무게 update
- 그렇지 않으면 다리에 더 오를 수 없다는 뜻이므로 bridge에 0 unshift()
- 회고 :
- while문 속 조건을 truck_weights.length로 주고 truck_weight.length 조건을 가진 if문을 삭제한 뒤 answer과 bridge_length(마지막에 건너는 차량의 소요 시간)의 합을 return해도 동일한 결과
- console문으로 현재 다리의 지나는 트럭을 시각화 하기 위해 아래 코드와 같이 작성함
-
코드
function solution(bridge_length, weight, truck_weights) { let answer = 0; const bridge = Array.from({length: bridge_length}, () => 0); let bridge_weight = 0; truck_weights.reverse(); while (bridge.length) { bridge_weight -= bridge.pop(); if (truck_weights.length) { const current = truck_weights.at(-1); if (weight >= current + bridge_weight) { bridge.unshift(truck_weights.pop()); bridge_weight += current; } else bridge.unshift(0); } answer++; } return answer; }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges