/ BOJ

BOJ_13458_시험감독_JAVA

문제 : 시험감독

링크 : BOJ_13458_시험감독

접근 방식

브론즈 문제였기 때문에 조금 쉽게 보았던 것 같다. 문제 자체는 어렵지 않다.

각 시험장별로 학생 수를 총 감독관과 부감독관의 감시할 수 있는 수로 나누고, 나누어 떨어지지 않는 경우에 1을 더해주면 되었다.

이 문제에는 함정이 몇 가지 숨어있다.

  1. 총 감독관이 무조건 1명은 있어야 한다.

  2. 총 감독관을 계산할 때 보통 뺄셈으로 계산하는데, 탐색가능한 인원 수보다 학생 수가 더 적으면 다음 부 감독관 검사에서 ‘-‘값이 나올 수 있다.

  3. 총 감독관 수는 int 범위를 벗어날 수 있다.

소스 코드

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 IOException {

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(in.readLine());

		StringTokenizer st2 = new StringTokenizer(in.readLine());

		StringTokenizer 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++) {
			int cnt = 1;
			int temp = Integer.parseInt(st2.nextToken());
			temp = temp-B;
			if(temp > 0) {
				if(temp % C == 0) {
					cnt = cnt + (temp)/C;
				}else {
					cnt = cnt + (temp)/C+1;
				}
			}
			total += cnt;
		}

		System.out.println(total);

	}

}

위에 적힌 함정들만 조심하면 되는데, 브론즈에 속해있다보니 쉽게 생각해서 많이 틀리는 것 같다. 나도 정답을 얻어내는데 4회의 실패가 있었고, 이는 문제의 정답 비율 27%와 가깝다.