작성일 :

문제 링크

1350번 - 진짜 공간

설명

파일들의 크기와 클러스터 크기가 주어질 때, 실제로 사용하는 디스크 공간을 구하는 문제입니다. 각 파일은 클러스터 단위로 공간을 차지하므로, 파일 크기를 클러스터 크기로 올림하여 계산합니다.


접근법

각 파일이 차지하는 클러스터 수를 구합니다. 파일 크기가 0이면 클러스터를 사용하지 않고, 그렇지 않으면 올림 나눗셈으로 필요한 클러스터 수를 계산합니다. 모든 파일의 클러스터 수를 합한 뒤 클러스터 크기를 곱하면 총 사용 공간이 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var parts = Console.ReadLine()!.Split();
    var c = long.Parse(Console.ReadLine()!);
    var sum = 0L;
    for (var i = 0; i < n; i++) {
      var s = long.Parse(parts[i]);
      if (s == 0) continue;
      sum += (s + c - 1) / c;
    }
    Console.WriteLine(sum * c);
  }
}

C++

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

typedef long long ll;
typedef vector<ll> vl;

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

  int n; cin >> n;
  vl a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  ll c; cin >> c;

  ll clusters = 0;
  for (ll s : a) {
    if (s == 0) continue;
    clusters += (s + c - 1) / c;
  }
  cout << clusters * c << "\n";

  return 0;
}