하루에 한 문제

[BOJ-13458] 시험 감독 -Java 본문

알고리즘/백준

[BOJ-13458] 시험 감독 -Java

dkwjdi 2021. 1. 29. 21:36

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

package 시뮬레이션_review;

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

public class boj_13458_시험감독 {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		
		long result=0; //최소 몇명?
		
		int N=Integer.parseInt(br.readLine());
		int people[]=new int[N];
		
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<N; i++) { //A 입력
			people[i]=Integer.parseInt(st.nextToken());
		}
		
		st = new StringTokenizer(br.readLine());
		int B=Integer.parseInt(st.nextToken());
		int C=Integer.parseInt(st.nextToken());
		
		for(int i=0; i<N; i++) {
			result++; //총시험관 한명추가
			people[i]-=B; //총시험관이 관리하는 수만큼 사람 수 빼줌
			if(people[i]<0) continue;
			result+=people[i]/C; //남은 사람 중 부시험관이 몇명 필요한지확인
			if(people[i]%C!=0) result++; // 딱 안나누어 떨어지면 1명추가
		}
		System.out.println(result);
	}

}

소요시간 : 10분

 

이런 문제가 코테에 나온다면 행복할 듯..

 

로직은 너무 쉽습니다

 

1. 각 시험장의 사람에서 총시험관이 관리할 수 있는 인원만큼 빼고, result++해줍니다.

2. 각 시험장의 남은 사람들을 관리하기 위해 부시험관이 몇 명 필요한지 확인해줍니다.

 

아 이문제에는 함정이 하나 있습니다!!

필요한 감독관의 최솟값을 저장하는 변수는 long이어야 합니다.

 

제한사항을 보면 

N(1 ≤ N ≤ 1,000,000)

(1 ≤ Ai ≤ 1,000,000)

(1 ≤ B, C ≤ 1,000,000)

 

B, C가 1이고 N, A가 가장 높을 때는 int의 범위를 넘어가기 때문입니다!!

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ-14502] 연구소 -Java  (0) 2021.01.30
[BOJ-14501] 퇴사 -Java  (3) 2021.01.29
[BOJ-14499] 주사위 굴리기 -Java  (1) 2021.01.27
[BOJ-2573] 빙산 -Java  (0) 2021.01.24
[BOJ-3190] 뱀 -Java  (1) 2021.01.08
Comments