본문 바로가기

개발/알고리즘

백준 알고리즘 13458

입력 : 시험장 갯수 N, 시험장 별 인원 A[i],
       
총감독관이 감독가능한 인원 B, 부감독관이 감독가능한 인원 C

출력 : 필요한 감독관의 총 인원수

 

풀이

1. 각 시험장에 총감독관을 한명씩 비치

2. 총감독관으로 관리할 수 없는 인원이 있으면 부감독관을 비치

3. (A[i]-B) / C 이 연산을 통해 각 시험장에 필요한 부감독관 인원을 바로 구할 수 있다.
    -> (A[i]-B) % C > 0이면 위 연산의 결과에서 부감독관이 한명 더 필요하다

4. 시험장 갯수, 인원이 모두 최대 10만이기 때문에 결과값은 int범위를 넘어갈 수 있다.
    -> long 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
#include <iostream>
using namespace std;
 
int main() {
    int n;
    int A[1000003];
    int B,C;
    long long result = 0;
    
    cin>>n;
    
    for(int i=0; i<n; i++)
        cin>>A[i];
    
    cin>>B>>C;
    
    for(int i=0; i<n; i++){
        A[i] -= B;
        result += 1;
        
        if(A[i] <= 0)
            continue;
        
        result += A[i]/C;
        
        if(A[i]%C != 0)
            result += 1;
    }
    
    cout<<result<<endl;
    
    return 0;
}
cs

'개발 > 알고리즘' 카테고리의 다른 글

백준 알고리즘 14500  (0) 2019.02.19
백준 알고리즘 14501  (0) 2019.02.16
백준 알고리즘 11931  (0) 2019.02.15
백준 알고리즘 14499  (0) 2019.02.15
백준 알고리즘 12100  (0) 2019.02.14