BOJ_13458_시험감독_JAVA
문제 : 시험감독
링크 : BOJ_13458_시험감독
접근 방식
브론즈 문제였기 때문에 조금 쉽게 보았던 것 같다. 문제 자체는 어렵지 않다.
각 시험장별로 학생 수를 총 감독관과 부감독관의 감시할 수 있는 수로 나누고, 나누어 떨어지지 않는 경우에 1을 더해주면 되었다.
이 문제에는 함정이 몇 가지 숨어있다.
-
총 감독관이 무조건 1명은 있어야 한다.
-
총 감독관을 계산할 때 보통 뺄셈으로 계산하는데, 탐색가능한 인원 수보다 학생 수가 더 적으면 다음 부 감독관 검사에서 ‘-‘값이 나올 수 있다.
-
총 감독관 수는 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%와 가깝다.