Koala - 15기/기초 알고리즘 스터디

[백준/C++] 1350번: 진짜 공간

.우디. 2024. 7. 7. 10:27

문제 & 링크

https://www.acmicpc.net/problem/1350

 

풀이

1. vector를 사용하여 각 파일의 크기를 저장한다. 이때 각 파일의 크기는 1,000,000,000이고, 최대 50개의 파일이 주어질 수 있으므로, 최대 50,000,000,000의 저장 공간이 필요하다. 따라서 vector의 자료형을 long long으로 설정해야 한다.

2. 클러스터의 크기를 저장한다.

3. 각 파일의 크기를 클러스터의 크기로 나눈다. 이때 나머지가 없을 경우 해당 몫을 count에 더하고, 나머지가 있을 경우 (몫 + 1)을 count에 더한다.

4. 모든 파일에 대해 3의 과정을 반복한 후 클러스터의 크기와 count의 값을 곱해주면 사용한 디스크 공간을 얻을 수 있다.

 

코드

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<long long> A;
    int N;
    cin >> N;
    
    for (int i = 0; i < N; i++) {
        int fSize;
        cin >> fSize;
        A.push_back(fSize);
    }
    
    int cSize;
    cin >> cSize;
    
    long long count = 0;
    for (int i = 0; i < N; i++) {
        count += A[i] / cSize;
        if (A[i] % cSize != 0) count++;
    }
    
    cout << cSize * count;
    
    return 0;
}