[프로그래머스/js] 다리를 지나는 트럭 (Lv. 2)

2025. 4. 30. 18:00·공부/코딩테스트

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42583
`프로그래머스 :: 다리를 지나는 트럭 :: Lv. 2`

 

문제 리뷰

지문을 읽으면서 트럭이 다리를 지나는 모습을 상상하게 되는 문제였습니다.

 

그래서 이 상상대로 구현이 될 것 같은 느낌이 왔는데요..

 

(문제 이해를 돕는 상상도)

 

문제를 풀면서 이런 그림을 그린 것은 아니고요

지금 게시글로 쓰면서 그려보았습니다. 재밌네요 (ㅋ)

 

코드를 보시면

와 진짜 그림대로 구현했네..

라고 생각하시게 될 것 같습니다.

 

첫 번째 시도 (정답)

code

function solution(bridge_length, weight, truck_weights) {
    let bridge = new Array(bridge_length).fill(null);
    let bridgeWeightSum = 0;
    let time = 0;
    
    while (bridge.length > 0 || truck_weights.length > 0) {
        const bridgeHead = bridge.shift();
        if (bridgeHead) {
            // 트럭 빠져나갔어요 무게 뺄게요
            bridgeWeightSum -= bridgeHead;
        }
        
        if (truck_weights.length > 0) {
            // 남은 트럭이 있어요
            
            const target = truck_weights[0];
            bridge.push(target);
            bridgeWeightSum += target;
            
            if (bridgeWeightSum > weight) {
                // 무게 초과했어요 빠꾸할게요
                bridge.pop();
                bridgeWeightSum -= target;
                bridge.push(null); // 빈 공간
            }
            else {
                // 무사히 다리에 진입했어요
                truck_weights.shift();
            }
        }
        
        time++; // 시간은 계속 흐른다..
    }
    
    return time;
}

 

review

다리를 지나가고 싶은 트럭이 있으면

그 트럭(target)을 다리에 넣어보려고 견적을 짰다가

견적이 영 안나오면(weight 초과) 다리 진입을 통제하게 되는 건데요.

 

진입이 통제된 사이에도 시간을 계속 흐르게 되는 것이죠..

거스를 수 없는 시간의 흐름이란 정말 무서운 것입니다..

 

다른 분들의 풀이를 보면, 저처럼 이렇게 시간을 1씩 흘려보내는 방법 대신

현재 트럭 ~ 다음 트럭 사이의 시간을 점프하도록 설계하신 분도 계셨습니다.

이런 방법이라면 다리 길이가 아주아주아주 길게 주어지더라도

어떤 문제나 성능 저하 없이 더 아름답게 결과를 낼 수 있을 것 같습니다.

 

저도 다시 도전을 해봐야겠습니다. 아자 ㅋ

'공부 > 코딩테스트' 카테고리의 다른 글

[BOJ/js] 31924번: 현대모비스 특별상의 주인공은? 2  (1) 2025.05.13
[프로그래머스/js] 네트워크 (Lv. 3)  (0) 2025.04.22
[프로그래머스/js] 게임 맵 최단거리 (Lv. 2)  (4) 2025.04.21
[프로그래머스/js] 캐시 (Lv. 2)  (1) 2025.04.18
[프로그래머스/js] 소수 찾기 (Lv. 2)  (2) 2025.04.16
'공부/코딩테스트' 카테고리의 다른 글
  • [BOJ/js] 31924번: 현대모비스 특별상의 주인공은? 2
  • [프로그래머스/js] 네트워크 (Lv. 3)
  • [프로그래머스/js] 게임 맵 최단거리 (Lv. 2)
  • [프로그래머스/js] 캐시 (Lv. 2)
ywwwon01
ywwwon01
이것저것 작성합니다.. 어엿한 웹 개발자로의 길
  • ywwwon01
    ywwwon01 님의 블로그
    ywwwon01
  • 전체
    오늘
    어제
    • 분류 전체보기 (33)
      • 낙서장 (3)
      • 공부 (20)
        • 코딩테스트 (13)
        • IT 인프라 (7)
      • 개발 (9)
        • Front-End (7)
        • Back-End (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배포
    VPC
    two-pointers
    splice
    Heap
    EC2
    AWS 프리티어
    WSL2
    falsy
    파일시스템
    에러 노트
    toString()
    EBS
    Queue
    델타 탐색
    ubuntu
    최적화
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
ywwwon01
[프로그래머스/js] 다리를 지나는 트럭 (Lv. 2)
상단으로

티스토리툴바