13458번 : 시험 감독 [Java]

2021. 3. 11. 22:24Algorithm/백준

반응형

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

 

실패한 코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // 시험장의 개수
		int[] arr = new int[N];

		for (int i = 0; i < N; i++)
			arr[i] = sc.nextInt(); // 각 시험장 응시자 수

		int B = sc.nextInt(); // 총감독관이 한 시험장에서 감시할 수 있는 응시자 수
		int C = sc.nextInt(); // 부감독관이 한 시험장에서 감시할 수 있는 응시자 수

		// 각 시험장에 총감독관은 1명, 부감독관은 여러명

		int temp = 0;

		for (int i = 0; i < N; i++) {
			temp++; // 총감독관
			temp += (arr[i] - B) / C; // 부감독관
			if ((arr[i] - B) % C != 0) // 부감독관 추가
				temp++;
		}
		
		System.out.println(temp);
	}
}

 

수정

1. temp의 단위가 int 범위를 넘어갈 수 있다. => long사용

2. 총감독관으로 시험장의 응시자를 모두 커버 할 수 있다면 다음 시험장으로 넘어간다.

 

제출 코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // 시험장의 개수
		int[] arr = new int[N];

		for (int i = 0; i < N; i++)
			arr[i] = sc.nextInt(); // 각 시험장 응시자 수

		int B = sc.nextInt(); // 총감독관이 한 시험장에서 감시할 수 있는 응시자 수
		int C = sc.nextInt(); // 부감독관이 한 시험장에서 감시할 수 있는 응시자 수

		// 각 시험장에 총감독관은 1명, 부감독관은 여러명

		long temp = 0;

		for (int i = 0; i < N; i++) {
			temp++; // 총감독관
			if (arr[i] <= B) // 총감독관으로 커버 가능
				continue;
			temp += (arr[i] - B) / C; // 부감독관
			if ((arr[i] - B) % C != 0) // 부감독관 추가
				temp++;
		}

		System.out.println(temp);
	}
}
반응형

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

2583번 : 영역 구하기 [Java]  (0) 2021.04.09
17103번 : 골드바흐 파티션 [Java]  (0) 2021.03.31
14503번 : 로봇 청소기 [Java]  (0) 2021.03.31
1309번 : 동물원 [Java]  (0) 2021.03.28
14888번 : 연산자 끼워넣기 [Java]  (0) 2021.03.12