Jun's Development Journey

[BOJ] 13458번 시험 감독 본문

BOJ/Implement

[BOJ] 13458번 시험 감독

J_Jayce 2021. 5. 26. 12:16

문제

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

풀이

1) 주의할 점

- int 자료형의 범위는 20억 정도까지이다.

- B=1, C=1, N=1,000,000, Ai=1,000,000 일 경우 cnt는 백만 X 백만 = 1조가 되어 범위를 넘어간다.

- cnt 변수형을 int로 하면 범위를 넘어가므로 long 타입으로 선언하여 구현해야한다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
import java.util.StringTokenizer;
import java.util.Map.*;


public class BOJ_13458 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        int N = Integer.parseInt(br.readLine());
        int[] classes = new int[N];
        st = new StringTokenizer(br.readLine());
        for(int i=0;i<N;i++)
            classes[i] = Integer.parseInt(st.nextToken());
        st = new StringTokenizer(br.readLine());
        int B = Integer.parseInt(st.nextToken()), C = Integer.parseInt(st.nextToken());
        //총감독관 들어가는 경우
        long cnt = N;
        for(int i=0;i<N;i++){
            if(classes[i]-B>0){
                int tmp = (classes[i]-B)%C;
                if(tmp==0)
                    cnt+=((classes[i]-B)/C);
                else
                    cnt+=((classes[i]-B)/C +1);
            }
        }
        System.out.println(cnt);
    }
}

'BOJ > Implement' 카테고리의 다른 글

[BOJ] 3985번 롤 케이크  (0) 2021.05.25
[BOJ] 17827번 달팽이 리스트  (0) 2021.05.12
[BOJ] 20055번 컨베이어 벨트 위의 로봇  (0) 2021.04.15