새소식

코딩테스트/백준_브론즈

[C++][백준 13458] 시험 감독

  • -

[문제]

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. 문제의 조건중 시험장의 응시자수가 총감독관의 수보다 적다는 말이 없다. 즉, 총감독관 1명이 하나의 시험장을 모두 맡을 수가 있다. 2. 시험장의 최대 갯수는 1,000,000이고 응시자 최댓수는 1,000,000이다. 즉, 감독관들이 1명씩 밖에 맡지 못한다면 필요한 감독관의 수의 범위가 int값을 넘어설 수 있다.

[코드]

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
#include<iostream>
#include<vector>
 
using namespace std;
 
int main(){
    int n;
    cin>>n;
    vector<int> candidate(n);
    for(int i = 0;i<n;i++){
        cin>>candidate[i];
    }
    int b,c;
    cin>>b>>c;
 
    long long answer = 0;
    answer += n;
 
    for(int i = 0;i<n;i++){
        candidate[i] -= b;
        if(candidate[i] % c == 0 and candidate[i] > 0){
            candidate[i] /= c;
            answer += candidate[i];
        }
        else if(candidate[i] > 0 and candidate[i] % c > 0){
            candidate[i] /= c;
            answer += candidate[i];
            answer++;
        }
    }
    cout<<answer<<endl;
 
    return 0;
}
cs

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.