본문 바로가기
알고리즘 문제풀이/백준

[백준 13335] 트럭

by m2162003 2020. 11. 4.

www.acmicpc.net/problem/13335

 

13335번: 트럭

입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트

www.acmicpc.net

 

구현 심각하다..공부하자

자료형은 큐를 사용한다.

 

트럭의 수만큼 큐에 push해주는데 q.size와 무게를 고려해야 한다.

q의 사이즈가 w과 같다면 팝한다. 

q의 무게가 초과한다면 0을 푸쉬한다.

 

마지막에 time에 다리 길이만큼 더해주는게 포인트다. 왜냐면 맨 마지막 트럭이 길을 건너는데는 다리 길이만큼의 시간이 걸리기 때문이다.

#include <stdio.h>
#include <queue>
#define MAX 1000

using namespace std;

int n, w, l;
int trucks[MAX] = {
    0,
};
int main(void)
{
  scanf("%d%d%d", &n, &w, &l);

  for (int i = 0; i < n; i++)
  {
    scanf("%d", &trucks[i]);
  }

  queue<int> q;

  int curLoad = 0, time = 0;
  for (int i = 0; i < n; i++)
  {
    while (1)
    {
      if (q.size() == w)
      {
        curLoad -= q.front();
        q.pop();
      }

      if (trucks[i] + curLoad <= l)
        break;

      q.push(0);
      time++;
    }

    q.push(trucks[i]);
    time++;
    curLoad += trucks[i];
  }

  printf("%d\n", time + w);
  return 0;
}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 1182] 부분수열의 합  (0) 2020.11.05
[백준 9663]N-Queen  (0) 2020.11.05
[백준 13913] 숨바꼭질 4  (0) 2020.11.01
[백준 13549] 숨바꼭질3  (0) 2020.10.29
[백준 1600] 말이 되고픈 원숭이  (0) 2020.10.29

댓글