Algorithm/BOJ

13458. 시험감독

자바로 풀어보는 첫 문제라서 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();
    }
}