[프로그래머스] 다리를 지나는 트럭(javascript)

프린이·2021년 6월 8일
1
post-thumbnail

  • 제 코드는 최선의 방안은 아닙니다.
  • 단순히 기록용, 공유용이니 이 점 보실 때, 참고바랍니다!

🔗 문제 링크

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가 일차선에 있는 이어진 다리의 갯수라는 자세한 설명이 없고 설명자체가 좀 이상해서 문제 이해하는데 너무 오래걸렸지만 생각보다 코드는 단순했다.
앞으론 설명 제발 잘 해주길,,^^

profile
주니어 프론트엔드개발자

0개의 댓글