[JS] 프로그래머스 / 스택/큐 / 다리를 지나는 트럭

2024. 10. 24. 18:14· 코딩 테스트/programmers
목차
  1. 핵심 아이디어
  2. 정답

문제

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

핵심 아이디어

  • 다리를 나타내는 배열을 길이만큼 0으로 초기화한다.
  • 현재 다리 위 트럭들의 무게를 추적하는 변수를 0으로 설정한다.
  • 전체 경과 시간을 추적하는 변수를 0으로 설정한다.
  • 모든 트럭이 다리를 건너거나 현재 다리 위에 트럭이 없을 때까지 반복문을 실행한다.
  • 매 반복마다 1초가 증가한다.
  • 다리에서 가장 앞에 있는 트럭(또는 0)을 제거하고 그 트럭의 무게를 현재 무게에서 뺀다.
  • 대기 중인 트럭이 남아 있고, 현재 다리 위 트럭들의 무게 합과 대기 중인 첫 번째 트럭의 무게를 더했을 때 허용 무게 이하이면 그 트럭을 다리로 옮긴다.
  • 그렇지 않으면 0을 다리에 추가하여 시간을 진행시킨다.
  • 전체 경과된 시간을 반환한다.

정답

function solution(bridge_length, weight, truck_weights) {
  let bridge = Array(bridge_length).fill(0);
  let currentWeight = 0;
  let totalSeconds = 0;

  while (truck_weights.length > 0 || currentWeight > 0) {
    totalSeconds++;

    const goneTruck = bridge.shift();
    currentWeight -= goneTruck;

    if (truck_weights.length > 0 && currentWeight + truck_weights[0] <= weight) {
      const next_truck = truck_weights.shift();
      currentWeight += next_truck;
      bridge.push(next_truck);
    } else {
      bridge.push(0);
    }
  }

  return totalSeconds;
}
 
 
저작자표시 비영리 변경금지 (새창열림)
  1. 핵심 아이디어
  2. 정답
'코딩 테스트/programmers' 카테고리의 다른 글
  • [JS] 프로그래머스 / 탐욕법(Greedy) / 큰 수 만들기
  • [JS] 프로그래머스 / 완전탐색 / 피로도
  • [JS] 프로그래머스 / 스택/큐 / 주식 가격
  • [JS] 프로그래머스 / 스택/큐 / 같은 숫자는 싫어
카버
카버
카버의 코딩일기카버 님의 블로그입니다.
카버
카버의 코딩일기
카버
  • All (414)
    • JavaScript (36)
    • CSS (1)
    • TypeScript (6)
    • React (17)
    • Redux (6)
    • Next.js (13)
    • Gatsby (2)
    • 코딩 테스트 (305)
      • programmers (238)
      • Baekjoon (51)
      • CroCoder (15)
    • ETC (28)
      • Error (9)
      • CS (8)
      • Terminal (2)
      • GitHub (1)
hELLO · Designed By 정상우.v4.2.2
카버
[JS] 프로그래머스 / 스택/큐 / 다리를 지나는 트럭
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.