본문 바로가기
코테연습

194. 다리를 지나는 트럭 Javascript

by hxunz 2023. 3. 23.

https://school.programmers.co.kr/learn/courses/30/lessons/42583

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

/**
* ## 이해
*
* 미지의 것: 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 return
* 자료
*   - 정해진 순으로 건넌다.
    - 다리에는 트럭이 최대 bridge_length대 올라갈 수 있다.
    - 다리는 weight 이하까지의 무게를 견딜 수 있다.
* 조건
*   -
*
* ## 계획
*   - 대기 트럭에서 다리를 건널 수 있는 트럭을 뺀다.
    - 트럭이 다리를 지나면 시간을 더한다.
    - 대기트럭에 트럭이 없으면 시간을 리턴한다.
*
* ## 실행
*
* ## 반성
*
*/
const totalWeight = (bridge) => bridge.reduce((acc, cur) => acc + cur, 0)

const solution = (bridge_length, weight, truck_weights) => {
  const bridge = Array.from({ length: bridge_length }, () => 0);
  let time = 0;

  while (true) {
    if (truck_weights.length === 0 && totalWeight(bridge) === 0) {
      return time
    }

    bridge.push(0);
    bridge.shift();
    time += 1;

    const current = truck_weights[0];

    if (totalWeight(bridge) + current <= weight && bridge.includes(0)) {
      bridge[bridge.length - 1] = current
      truck_weights = truck_weights.slice(1)
    }
  }
};

test('solution', () => {
  expect(solution(2, 10, [7, 4, 5, 6])).toEqual(8);
})

'코테연습' 카테고리의 다른 글

196. 점 찍기 Javascript  (0) 2023.03.29
195. 뒤에 있는 큰 수 찾기 Javascript  (0) 2023.03.24
193. 파일명 정렬 Javascript  (0) 2023.03.22
192. 땅따먹기 Javascript  (0) 2023.03.20
191. 방문길이 Javascript  (0) 2023.03.20

댓글