[프로그래머스][Level2] 다리를 지나는 트럭 c++

2024. 2. 21. 19:14·🍞 Algorithm/Programmers
반응형

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

 

프로그래머스

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

programmers.co.kr

 

풀이과정

다리를 건너는 트럭을 queue를 사용해 푸는 문제이다.

먼저 현재 무게에 대기 트럭 첫번째 값을 넣어준다.

다리를 건너는 트럭의 총 무게 + 현재 무게 <= 다리가 버틸 수 있는 무게이므로 현재 무게를 queue에 넣는다.

반대로, 더한 값 > 다리가 버틸 수 있는 무게면 무게가 0인 트럭으로 대체하여 넣어준다.

시간은 answer++로 while문이 돌아갈 때동안 1씩 증가시켜준다.

#include <string>
#include <vector>
#include <queue>

using namespace std;

/* 
   bridge_length 다리에 올라갈 수 있는 최대 트럭수 
   weight 다리가 버틸 수 있는 무게
   truck_weights 대기 트럭
*/

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int answer = 0;

    queue <int> on_bridge; // 다리에 올라간 트럭
    int sum = 0; // 다리에 올라간 트럭 총 무게
    
    int i = 0;
    while(1){
        int now_weight = truck_weights[i];
        
        // 대기 트럭이 없을 경우에 다리의 길이만큼 시간 필요
        if (i == truck_weights.size()) {
            answer += bridge_length;
            break;
        }
        
        // 다리에 올라간 트럭이 다리에 올라갈 수 있는 트럭수와 같을 때
        if (on_bridge.size() == bridge_length) {
            sum -= on_bridge.front();
            on_bridge.pop();
        }
        
        // 다리에 올라간 트럭 총 무게 + 현재 무게 <= 다리가 버틸 수 있는 무게
        if (sum + now_weight <= weight) {
            sum += now_weight;
            on_bridge.push(now_weight);
            i++;
        } else { // 못 올라가면 무게 0 트럭으로 대체
            on_bridge.push(0); 
        }
        
        answer++;
    }
    
    return answer;
}
반응형
저작자표시 (새창열림)

'🍞 Algorithm > Programmers' 카테고리의 다른 글

[프로그래머스][Level3] 베스트앨범 c++  (0) 2024.02.22
[프로그래머스][Level3] 네트워크 c++  (0) 2022.10.21
[프로그래머스][Level3] 가장 먼 노드 c++  (0) 2022.10.21
[프로그래머스][Level2] 행렬의 곱셈 c++  (0) 2022.10.21
[프로그래머스][Level2] 피로도 c++  (0) 2022.10.21
'🍞 Algorithm/Programmers' 카테고리의 다른 글
  • [프로그래머스][Level3] 베스트앨범 c++
  • [프로그래머스][Level3] 네트워크 c++
  • [프로그래머스][Level3] 가장 먼 노드 c++
  • [프로그래머스][Level2] 행렬의 곱셈 c++
박빵이
박빵이
칭찬은 박빵도 춤추게 한다
  • 박빵이
    기억보다 기록
    박빵이
  • 전체
    오늘
    어제
    • 분류 전체보기 (336)
      • 🍞 AI (1)
      • 🍞 Cloud·Infra (1)
        • AWS SAA (1)
      • 🍞 FrontEnd (89)
        • HTML · CSS (4)
        • JavaScript (16)
        • TypeScript (3)
        • React (45)
        • Next.js (1)
        • Android (15)
      • 🍞 BackEnd (4)
        • FastAPI (1)
        • Java (15)
        • Node.js (6)
        • SpringBoot (1)
      • 🍞 Algorithm (147)
        • C++ (4)
        • Baekjoon (41)
        • Programmers (97)
      • 🍞 Computer Science (18)
        • 운영체제 (1)
        • 네트워크 (6)
        • 데이터 통신 (6)
        • 데이터베이스 (1)
      • 🍞 대외활동 & 부트캠프 (42)
        • 삼성 청년 SW 아카데미 (1)
        • LG유플러스 유레카 (0)
        • 한국대학생IT경영학회 (1)
        • IT연합동아리 UMC (17)
        • IT연합동아리 피로그래밍 (3)
        • 길벗 블로깅 멘토 (18)
        • 개발 컨퍼런스 (2)
      • 🍞 개발 협업 & 생산성 (2)
  • 블로그 메뉴

    • 글쓰기
    • Admin
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Front
    플로이드 와샬
    길벗 블로깅 멘토링
    Android
    코딩자율학습
    umc
    Java
    JavaScript
    백준
    level1
    알고리즘
    프로그래머스
    유니온파인드
    안드로이드
    위상정렬
    react
    코틀린
    C++
    level2
    길벗 블로깅 멘토
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.6
박빵이
[프로그래머스][Level2] 다리를 지나는 트럭 c++
상단으로

티스토리툴바