https://programmers.co.kr/learn/courses/30/lessons/42583
1. 일차선 다리 갯수만큼의 길이를 가진 배열 만들기
(= 다리를 건너고 있는 트럭을 담는 배열)
2. 경과 시간 1씩 지날 수록 맨 앞에 있던 첫 번째 원소는 다리를 빠져나갔으니 배열에서 빼기
3. 경과 시간 1씩 증가하고, 기다리고 있는 트럭이 있는지 확인
1> 기다리고 있는 트럭 있음 배열 원소값의 합과 기다리는 트럭들 중 첫 번째 트럭의 무게를 더해 다리가 버틸 수 있는 무게인지 확인 1) 버틸 수 있음 맨 뒷 자리에 해당 트럭 추가 2) 버틸 수 없음 맨 뒷 자리 undefined채워 배열 길이만 맞춰줌 2> 기다리고 있는 트럭 없음 아무것도 배열에 추가하지 않음
4. 다리를 건너고 있는 트럭이 아무것도 없으면 무한 루프 멈추고 경과 시간 반환
function solution(bridge_length, weight, truck_weights) { var crossTruck = []; crossTruck.length = bridge_length; var answer = 0; while(crossTruck.length != 0){ answer++; var sum = 0; crossTruck.shift(); crossTruck.map(function(a){ if(a != undefined) sum += a; }); if(truck_weights.length > 0 && sum + truck_weights[0] <= weight){ crossTruck.push(truck_weights.shift()); } else{ if(truck_weights.length > 0) crossTruck.push(undefined); } } return answer; }
bridge_length가 일차선에 있는 이어진 다리의 갯수라는 자세한 설명이 없고 설명자체가 좀 이상해서 문제 이해하는데 너무 오래걸렸지만 생각보다 코드는 단순했다.
앞으론 설명 제발 잘 해주길,,^^