알고리즘/백준

백준 13458 시험감독

고구마와 감자 2022. 2. 18. 22:58

https://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

  •  그냥 for문안에 while문 쓰면 시간초과
  • while문을 없애고 몫, 나머지 연산으로 감독관 수를 구하긴 했지만, 수가 총감독관보다 작거나 같은 경우를 고려하지 못해서 오답이 나왔다. 결국 검색했다..

 

public class Boj13458_시험감독 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 시험장의 갯수
        int n = Integer.parseInt(br.readLine());

        // i번 시험장의 응시자의 수
        int[] a = new int[n];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(st.nextToken());
        }

        st = new StringTokenizer(br.readLine());
        // 총감독관이 감시 가능 응시자의 수
        int b = Integer.parseInt(st.nextToken());
        // 부감독관이 감시 가능 응시자의 수
        int c = Integer.parseInt(st.nextToken());

        long cnt = 0;

        for (int i = 0; i < a.length; i++) {
            long result = 0;
            if (a[i] <= b) {
                cnt++;
                continue;
            } else {
                cnt++;
                a[i] -= b;
                if(a[i] % c != 0) {
                    cnt += a[i] / c + 1;
                } else {
                    cnt += a[i] / c;
                }
            }
        }
        System.out.println(cnt);
    }
}