Algorithm/삼성 SW 역량 테스트 기출 문제

[Baekjoon][13458] 시험 감독

어발 2022. 1. 17. 23:03

출처 - 백준사이트

13458번: 시험감독

나의 풀이

여기서 중요한 점은 최종 결과를 담을 변수의 크기인데, B, C가 1이고 N과 응시자수 A가 최대값인 1,000,000인 경우 int의 최대값을 넘어감을 유의 한다.

#include <iostream>

#define MAX    1000000

using namespace std;

int N, B, C;
int tester[MAX];
long long result;

int main() {
    cin >> N;

    for (int idx = 0 ; idx < N ; idx++)
        cin >> tester[idx];

    cin >> B >> C;

    for (int idx = 0 ; idx < N ; idx++) {
        result++; // 총감독관은 무조건 한명이니까 더하고

        if (tester[idx] - B > 0) { // 총 감독관으로 부족한 경우
            if ((tester[idx] - B)/C) { // 부감독관이 한명이상 필요한 경우
                if ((tester[idx]-B)%C) // 부감독관으로 나눴을때 나머지가 있는 경우
                    result += ((tester[idx]-B)/C) + 1;
                else // 부감독관으로 나눴을때 딱 떨어지는 경우
                    result += (tester[idx]-B)/C;
            }
            else // 부감독관은 한명으로 충분
                result++;
        }
    }

    cout << result;

    return 0;
}
728x90