본문 바로가기
  • 소소한 개발자 이야기
Algorithm Study/BOJ with C++

(BAEKJOON) 13458번: 시험 감독

by Siwan_Min 2020. 4. 18.
728x90

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

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
#include <iostream>
 
using namespace std;
 
int n, B, C; 
long long cnt;
int arr[1000005];
 
int main(){
 
    cin>>n;
    for(int i = 0 ; i < n; i++cin>>arr[i];
    cin>>B>>C;
 
    for(int i = 0; i < n; i++){
        arr[i] = arr[i] - B;
        cnt++;
        if(arr[i] > 0){
            int candi = arr[i] / C;
            if(arr[i] % C != 0) candi++;
 
            cnt += candi;
        }
         
    }
    cout<<cnt;
    
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

매우 간단한 문제 입니다.

(1) 출력의 값은 int 형 범위를 넘어갈수 있기 때문에 long long cnt 변수를 만들어 줍니다

(2) n 만큼 배열에 시험장의 정보를 저장합니다. 

(3) 각 시험장마다 총감독관이 무조건 들어가야 하므로 모든 시험장에 총 감독관을 배치 해줌으로써 배열[i] (i번째 시험장의 응시자 수) - B(총 감독관이 감독할 수 있는 사람 수)를 하고 cnt++를 해줍니다.

 - B를 빼주고난 뒤에 값이 0보다 크다면 

 - 각 시험장마다 C(부감독관이 감독할 수 있는 사람 수)로 나누어 줍니다.

 - 만약, C로 나눈 나머지가 0 이 아니라면 candi++를 해줍니다.

 - candi 를 cnt에 더해줍니다. 

(4) cnt(결과)를 출력합니다. 

728x90

댓글