뚱땅뚱땅

[문제] 백준 13458번 시험 감독 - 자바 본문

알고리즘/삼성 SW역량테스트 기출

[문제] 백준 13458번 시험 감독 - 자바

양순이 2021. 8. 29. 15:32
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

 

# 주의할 점 - 변수의 범위

int형의 범위는 대략 20억까지 커버된다.

이 문제에서는 시험장의 개수인 N이 100만까지고, 시험장마다의 응시자 수도 100만까지다.

따라서, 총 응시자는 100만 * 100만 > 20억 이고, 총감독관과 부감독관이 1명씩 감독가능한 경우 전체 감독자 수는 int형 범위를 넘게 된다. 따라서 long형 변수가 필요하다.

 

public class Main {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(in.readLine());	// 시험장 개수
		
		int[] arr = new int[N];	// 각 시험장마다의 응시자 수
		StringTokenizer st = new StringTokenizer(in.readLine(), " ");
		for(int i=0;i<N;i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		st = new StringTokenizer(in.readLine(), " ");
		int B = Integer.parseInt(st.nextToken());	// 총감독이 관리가능한 학생 수
		int C = Integer.parseInt(st.nextToken());	// 부감독이 관리가능한 학생 수
		
		long total = 0;
		for(int i=0;i<N;i++) {
			total++;
			int remain = arr[i]-B;	// 전체 인원 - 총감독관이 감시가능한 인원
			
			if(remain<=0) continue;	// 남는 사람이 없으면 부감독관 필요 X
			// 부감독관 수
			total += remain/C;
			if(remain%C != 0) total++;
		}
		
		System.out.println(total);
	}
}
728x90
Comments