코딩테스트/백준

[백준]13458번 시험 감독 - Java

GAEBAL 2022. 3. 24. 22:53
728x90

문제

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

 

풀이

걍 쉬운 문제라서 풀었는데 자꾸 틀렸다.

그래서 다시 문제를 보니

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.
셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

주어지는 값들의 범위가 장난이 아니다 ㅋㅋㅋㅋㅋㅋㅋ

 

최악의 경우는 B와 C가 모두 1이고, N이 1,000,000, 모든 A가 1,000,000일 때인데, 이렇게 되면 답이 1,000,000,000,000이다!

 

인트형은 양의 정수일 경우 약 23억 정도로 알고 있는데 암튼 그 정도 값은 그냥 넘는다.

그래서 반환하는 값(정답)의 타입을 long형으로 하니까 통과가 됐다!

 

꼭 문제를 잘 읽고 어느정도는 키보드에 손을 올리기 전에 어림잡아서 계산을 하는 버릇을 들여야겠당

 

코드

// 13458번 시험 감독
// https://www.acmicpc.net/problem/13458

package BAEKJOON;

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

public class Num13458_시험감독 {

    static int[] arr;

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

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

        arr = new int[N];

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

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

        System.out.println(solution(arr, B, C));
    }

    private static long solution(int[] arr, int B, int C) {
        long count = 0;

        for (int i = 0; i < arr.length; i++) {
            arr[i] -= B;
            count++;

            if (arr[i] > 0) {
                count += arr[i] / C;
                if (arr[i] % C != 0) {
                    count++;
                }
            }
        }

        return count;
    }


}
728x90