작성일 :

문제 링크

10409번 - 서버

설명

작업들이 순서대로 주어졌을 때, 총 시간 제한을 넘지 않는 범위 내에서 앞에서부터 최대 몇 개의 작업을 처리할 수 있는지를 계산하는 문제입니다.


접근법

  • 전체 작업 수제한된 총 시간을 입력받습니다.
  • 각 작업 시간을 순서대로 입력받으며,
    누적 합이 제한 시간을 넘기지 않는 한 계속 작업을 수행합니다.
  • 누적 합이 초과되는 순간 반복을 멈추고, 지금까지 수행한 작업 수를 출력합니다.

Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Linq;

class Program {
  static void Main() {
    var input = Console.ReadLine().Split().Select(int.Parse).ToArray();
    int n = input[0], t = input[1];
    var jobs = Console.ReadLine().Split().Select(int.Parse).ToArray();

    int sum = 0, count = 0;
    foreach (var job in jobs) {
      sum += job;
      if (sum <= t) count++;
      else break;
    }

    Console.WriteLine(count);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n, t; cin >> n >> t;
  int sum = 0, cnt = 0;
  while (n--) {
    int x; cin >> x;
    sum += x;
    if (sum <= t) cnt++;
  }
  cout << cnt << "\n";

  return 0;
}