자바로 풀어보는 첫 문제라서 2번이나 틀렸다ㅠ
문제 자체의 로직은 어렵지않다!
문제의 조건
- 각 시험장에 총감독관은 무조건 있어야한다.
- 최대의 경우 1_000_000 * 1_000_000 의 수가 나올 수 있으므로 int로는 해결할 수 없다.
일단 시험장의 개수만큼 총 감독관이 있어야하므로 ans는 N인 상태로 시작한다.
만일 `각 시험장의 숫자 - B`가 음수라면 더 이상의 인원배치가 필요없으므로 넘어간다.
만일 양수라면 `남은 사람의 수 / 부감독관`을 더하고 나누어 떨어지지 않으면 추가로 1을 더 더한다.
더보기
더보기
import java.io.*;
import java.math.BigInteger;
import java.util.StringTokenizer;
public class Main {
static int N, B, C;
static int[] CLASS;
public static void InputData() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
CLASS = new int[N];
StringTokenizer stk = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++){
CLASS[i] = Integer.parseInt(stk.nextToken());
}
stk = new StringTokenizer(br.readLine(), " ");
B = Integer.parseInt(stk.nextToken());
C = Integer.parseInt(stk.nextToken());
br.close();
}
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
InputData();
long ans = N;
for (int now : CLASS) {
now -= B;
if(now > 0){
ans += now / C;
if(now % C != 0){
ans++;
}
}
}
bw.write(String.valueOf(ans));
bw.flush();
bw.close();
}
}