https://www.acmicpc.net/problem/1350
1350번: 진짜 공간
첫째 줄에 파일의 개수 N이 주어진다. N은 1,000보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌 정수이다. 마지막 줄에는 클러스터의 크기가 주어진다. 이 값은 1,048,576보다 작거나 같은 자연수이다.
www.acmicpc.net
단순 나눗셈 문제다. 주의할 점은 클러스터의 갯수와 클러스터의 총 용량을 long long int로 설정해야 된다는 것이다. 파일의 크기가 클러스터보다 크면 다른 클러스터 공간을 끌어와서 써야하고 한 번 사용한 클러스터 공간은 다른 파일의 공간으로 사용할 수 없다. 파일을 클러스터로 나눈 몫을 클러스터의 필요한 클러스터의 갯수로 더하고 파일을 클러스터로 나눈 나머지가 존재하면 클러스터의 갯수를 +1 증가 시킨다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N; //파일의 갯수
vector<int> v; //파일의 크기를 담을 공간
int cluster; //클러스터 용량
long long int cnt = 0; //필요한 클러스터의 수
long long int res; //결과 값
cin >> N;
for (int i = 0; i < N; i++) {
int num;
cin >> num;
v.push_back(num);
}
cin >> cluster;
//클러스터의 갯수를 조사
for (int i = 0; i < N; i++) {
if (v[i] == 0) { //파일의 크기가 0이면
continue; //무시
}
cnt = cnt + (v[i] / cluster); //파일의 크기를 클러스터로 나눈 몫을 저장
if (v[i] % cluster != 0) { //클러스터가 나머지가 있으면
cnt++; //공간이 한 개더 필요하므로 +1 증가
}
}
res = cluster * cnt; //필요한 클러스터의 용량을 계산
cout << res;
}
'백준' 카테고리의 다른 글
백준1747 - 소수&팰린드롬 (0) | 2019.08.31 |
---|---|
백준5568 - 카드 놓기 (0) | 2019.08.30 |
백준1932 - 정수 삼각형 (0) | 2019.08.29 |
백준15651 - N과 M (3) (0) | 2019.08.27 |
백준15650 - N과 M (2) (0) | 2019.08.27 |