코드: https://github.com/kgh128/Problem-Solving/blob/main/src/Baekjoon/p13458.java
각 시험장에 총감독관은 반드시 1명이 있어야 하므로 총 N개의 시험장이 있으면 N명의 총감독관이 필요하다. 따라서 필요한 감독관의 수(minSupervisors)에 N을 더한다.
1명의 총감독관은 B명의 응시자를 감시할 수 있다.
총감독관이 시험장의 모든 응시자를 감시할 수 있으면 부감독관은 필요하지 않다.
(각 시험장의 응시자 수) <= B이면 부감독관은 필요 X(각 시험장의 응시자 수) > B이면 부감독관이 필요 O부감독관이 필요하지 않은 경우를 고려하지 않아 계속 틀렸다. 이를 고려하지 않으면
minSupervisors가 음수가 나오는 반례가 존재한다.
총감독관이 감시해도 응시자가 남은 경우에 필요한 부감독관의 수를 구한다.
(각 시험장의 남은 응시자 수) = (각 시험장의 응시자 수) - B한 명의 부감독관은 C명을 감시할 수 있으므로 일단 필요한 부감독관의 수는 (각 시험장의 남은 응시자 수) / C이다. 이를 minSupervisors에 더한다.
(각 시험장의 남은 응시자 수) % C == 0이면 더 남은 응시자가 없으므로 부감독관이 더 필요하지 않다.(각 시험장의 남은 응시자 수) % C != 0이면 감시해야할 응시자가 아직 더 남았으므로 1명의 부감독관이 더 필요하다.minSupervisors에 1을 더한다.위의 과정을 각 시험장마다 반복하여 최종적으로 minSupervisors를 구하고 출력한다.
minSupervisors 자료형minSupervisors가 최대가 나오는 경우를 생각해보자.
이 경우에 각 시험장마다 필요한 최소 감독관의 수가 1,000,000명이므로 minSupervisors는 1,000,000,000,000이다.
이는 int형의 최댓값인 2,147,483,647을 벗어난다.
따라서 minSupervisors는 int형이 아니라 long형으로 선언해야 문제를 풀 수 있다.
minSupervisors를 int형으로 선언하고 풀어서 계속 틀렸다. 다음부터는 정수 자료형의 범위도 고려하면서 풀어야겠다.