문제
총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다.
감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 방에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 방에서 감시할 수 있는 응시자의 수가 C명이다.
각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.
각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.
문제접근법.
1. 예제를 보면, 총 감독관은 항상 있어야 한다.
2. 총 감독관이 감독할 수 있는 인원을 제외한 나머지 인원은 부 감독관이 감독해야 한다.
1번과 2번만 알아도 쉽게 해결할 수 있는 문제이다. 정답 비율이 낮은 이유에 대해서는 아마 자료형때문으로 보인다. 시험장의 개수와 응시자의 수를 곱해보면, 만약에 B와 C가 각각 1이라면 기존의 int 범위를 초과하게 된다. 따라서 자료형을 long long정도로 바꿔주면 쉽게 해결할 수 있다.
해설코드(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
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <algorithm>
#include <iostream>
#include <cstring>
using namespace std;
int N;
long long A[1000001];
long long B, C;
long long answer = 0;
int main(void) {
freopen("input.txt", "r", stdin);
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> A[i];
}
cin >> B >> C;
// Cal
for (int i = 1; i <= N; i++) {
A[i] -= B;
answer += 1;
if (A[i] > 0) {
int temp = A[i] / C;
A[i] -= (temp * C);
answer += temp;
if (A[i] > 0) {
answer += 1;
}
}
}
cout << answer << endl;
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'알고리즘 > 백준' 카테고리의 다른 글
[17142번] 연구소 3 (0) | 2019.10.13 |
---|---|
[17140번] 이차원 배열과 연산 (0) | 2019.10.13 |
[14500번] 테크로미노 (0) | 2019.10.12 |
[15684번] 사다리 조작 (0) | 2019.10.12 |
[12100번] 2048 (Easy) (삼성코딩테스트) (0) | 2019.10.09 |