알고리즘(Algorithm)/백준(Baekjoon)

[백준 Baekjoon] 13458번 시험 감독 - JAVA

나아가는중 2021. 11. 14. 18:26
반응형

문제 풀이

문제를 읽어보면 이해하는데나 방법을 찾는데에 큰 어려움은 없는 쉬운 문제입니다. 각 시험장에서 총감독이 관리하는 인원만큼 제외하고 부감독이 몇명 필요한지 구해 총 합을 리턴하면 됩니다.

 

하지만 문제의 제한사항을 제대로 안보면 틀렸다고 나오는데 N이 1,000,000, 각 시험장에 1,000,000 명씩, B와 C가 모두 1이라고 가정하면 결과는 int범위를 넘어서는 큰 수가 나오게 됩니다. 총 합을 구할때에 long 타입으로 하면 이슈없이 문제를 푸실 수 있습니다.

소스 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());

        int[] room = new int[N];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            room[i] = Integer.parseInt(st.nextToken());
        }

        st = new StringTokenizer(br.readLine());
        int B = Integer.parseInt(st.nextToken());
        int C = Integer.parseInt(st.nextToken());

        long answer = N;

        for (int candidate : room) {
            candidate -= B;

            if (candidate > 0) {
                answer += candidate % C == 0 ? candidate / C : candidate / C + 1;
            }
        }

        System.out.println(answer);
    }
}
반응형