본문 바로가기

BOJ/C++

[BOJ] 시험감독

[문제]

 

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

 

13458번: 시험 감독

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

www.acmicpc.net

 

[풀이]

 

13458 맞았습니다!! 5892 KB 128 ms C++14 / 수정 680 B 59초 전

 

1) 삼성 기출문제가 아니거나 엄청 간략화 됐거나 초창기 문제인 것 같다. 

 

2) 처음에는 DP로 푸는 건가 했는데 그냥 총 감독관이 감독할 수 있는 인원수를 빼준 후 부 감독관 계산을 해주면 된다. 

 

3) 중요한 것은  N(1 ≤ N ≤ 1,000,000)  Ai (1 ≤ Ai ≤ 1,000,000) 이기 때문에 결과값이 int를 넘어갈 수 있다. 

 c++ 는  long long / JAVA 는 Long 으로 처리 

 


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
37
38
39
40
41
42
#include <iostream>
 
using namespace std;
typedef long long ll;
 
int n, A[1000001], sup_direc, sub_direc; //시험장 개수
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
 
    cin >> n;
 
    int tmp = 0;
    for (int i = 1; i <= n; i++)
    {
        cin >> A[i];
        if (tmp < A[i])
            tmp = A[i]; //가장 큰 값을 구한다.
    }
    cin >> sup_direc >> sub_direc;
    //input
 
    ll cnt = 0;
 
    for (int i =1; i <= n; i++) {
        cnt++;
        int tmp = A[i] - sup_direc;
        if (tmp > 0) {
            if (tmp % sub_direc == 0) {
                //부감독관 한명만 추가로 있으면 된다. 
                cnt += tmp / sub_direc;
            } else {
                cnt += tmp / sub_direc + 1;
            }
        }
    }
 
    cout << cnt << '\n';
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

'BOJ > C++' 카테고리의 다른 글

[BOJ] 발전소  (0) 2019.08.08
[BOJ] 게임  (0) 2019.08.07
[BOJ] 연산자 끼워넣기  (0) 2019.08.07
[BOJ] 구슬탈출2  (0) 2019.08.07
[BOJ] 연구소  (0) 2019.08.06