새소식

알고리즘 문제풀이/BOJ

[백준 알고리즘, 브루트 포스] 삼성 코딩 테스트 문제 :: 13458번 시험감독 자바 풀이

  • -

문제를 직접 풀어 보고 싶다면

아래 주소로 들어가셔서 하시면 됩니다

 

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

 

출처: 백준 온라인 저지 (https://www.acmicpc.net)

 

 


추가 예제 입력과 출력


// 예제 입력1
3
3 4 5
2 2

// 예제 출력1
7

// 예제 입력2
3
7 7 9
4 9

// 예제 출력2
6

// 예제 입력3
3
7 7 9
7 3

// 예제 출력3
4

 

예제 입 출력을 보면서 문제를 먼저 이해하는게 중요한 문제인것 같아요

우선 각 방마다 총감독관은 무조건 한 명이 있어야 되요. 덜도 말고 더도 말고 한명!!

나머지 인원은 부감독관이 관리합니다.

그렇기 때문에 응시생에서 총감독관이 감독할 수 있는 인원 수를 빼주고 => 응시생-총감독관(1)

나머지는 부감독관이 감독할 수 있는 인원수로 몫과 나머지를 구해서 구해주면 되요!

=>( 응시생-총감독관) / 부감독관이 관리할 수 있는 인원수    => 몫과 나머지 구하기

 

예를 들어 방에 응시생이 10명 이고 B값이 3, C값이 2라고 가정해봅시다

그러면 우선 10-3=7 을 통해 총감독관이 들어 갔어요

나머지 7명을 부 감독관이 관리해야하니까 7/3=2...1 이죠?

그러니까 부 감독관이 2명 들어가고도 1명을 더 커버해야되니까 총 3명이 필요해요

즉 나눠서 나머지가 있다면 1명을 더 더해줘서 계산해주면 됩니다

 

주의 할점!!!

저번에도 이런 문제에서 잘못한게 총 감독관의 수가 int형을 넘어 간다는 겁니다. 즉 21억으로 못 담음....

그걸 모르고 계속 제출하자마자 틀렸다고 그러더라구요 ㅠㅠㅠ

감독 인원수를 담을 변수는 long Type으로 선언해줍시다!!

 

백준 온라인 저지(BOJ) 13458번: 시험 감독 자바(java) 풀이

import java.util.Scanner;

class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		int numberOfRoom = scan.nextInt();	// 시험장의 개수
		int[] numberOfPersons = new int[numberOfRoom];	// 각 시험장의 응시자 수
		int main_enableSupervise, sub_enableSupervise;	// 총 감독과, 부 감독관의 감시할 수 있는 응시자 수
		long mainSupervisor = 0, subSupervisor = 0;

		for(int i=0; i<numberOfRoom; i++) {
			numberOfPersons[i] = scan.nextInt();
		}

		main_enableSupervise = scan.nextInt();
		sub_enableSupervise = scan.nextInt();

		for(int i=0; i<numberOfRoom; i++) {
			numberOfPersons[i] -= main_enableSupervise;
			mainSupervisor++;

			if(numberOfPersons[i] > 0){
				if(numberOfPersons[i] <= sub_enableSupervise){
					subSupervisor++;
				}
				else{
					subSupervisor += numberOfPersons[i] / sub_enableSupervise;
					if( numberOfPersons[i] % sub_enableSupervise != 0)
						subSupervisor++;
				}
			}
		}

		System.out.println(mainSupervisor + subSupervisor);
	}

}

2019/10/09 - [알고리즘/백준 알고리즘] - [백준 알고리즘, 백트레킹, 브루트 포스] 삼성 SW 역량 테스트 문제 :: 14502번 연구소

2019/10/11 - [알고리즘/백준 알고리즘] - [백준 알고리즘, 브루트 포스] 삼성 SW 역량 테스트 문제 :: 13458번 시험감독

2019/10/11 - [알고리즘/백준 알고리즘] - [백준 알고리즘, 브루트 포스] 삼성 SW 역량 테스트 문제 :: 14889번 스타트와 링크

2019/10/13 - [알고리즘/백준 알고리즘] - [백준 알고리즘, 브루트 포스, 순열] 삼성 SW 역량 테스트 문제 :: 14888번 연산자 끼워넣기

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.