Coding Problem/SW 역량 테스트

[백준/SW역량테스트 기출] 13458 - 시험 감독

마탁이 2021. 2. 3. 16:12

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

  • 브론즈 2레벨 문제 (삼성역량 테스트 문제에서는 가장 쉬운 난이도...)
  • 총감독관이 없어도 되는지에 대한 의문이 남긴한다.
  • 최대 입력이 1,000,000 으로 주어지기 때문에 long long으로 값을 출력하였다.

  • 코드
더보기
#include <iostream>
#include <vector>

// size
#define INPUT_MAX_SIZE 1000000

// debug
#define debug_m 0

// method
long long Calc(const int src, const int B, const int C);

int main()
{
    // init
    std::ios::sync_with_stdio(false);

    // input
    int N = 0; // 시험장의 개수
    (void)scanf("%d", &N);

    std::vector<int> ALists;
    for (int n = 0; n < N; n++)
    {
        int A = 0; // 각 시험장마다 응시생 수
        (void)scanf("%d", &A);
        ALists.push_back(A);
    }

    int B, C; // 총, 부감독관이 한 시험장에서 감시할 수 있는 수
    B = C = 0;
    (void)scanf("%d %d", &B, &C);

    // calc
    /**
     * 각각의 시험장에 총 감독관은 오직 1명
     * 부감독관은 여러명 있어도 된다.
     * 총감독관 없이 부감독관만 있어도 되는가?
     * */
    long long answer = 0;
    for (int humman : ALists)
    {
        answer += Calc(humman, B, C);
    }

    // print
    printf("%lld\n", answer);

    return 0;
}

// mehtod
long long Calc(const int src, const int B, const int C)
{
    long long retValue = 0;

#if debug_m
    printf("src: %d, B: %d, C: %d\n", src, B, C);
#endif

    int data = src;
    if (B >= data)
        retValue = 1;
    else
    {
        data -= B;
        retValue += 1;

        retValue += data / C;
        const int modValue = data % C;
        if (0 != modValue)
            retValue += 1;
    }

    return retValue;
}