728x90
안녕하세요 Coding-Knowjam입니다.
오늘은 백준 온라인 저지에 있는 13458번 시험감독 문제를 Java로 풀어보겠습니다.
1. 문제 설명
문제를 설명하기에 앞서 아래 링크를 통해서 문제를 읽고 와주시길 바랍니다.
https://www.acmicpc.net/problem/13458
문제의 난이도는 브론즈 2로 상당히 쉬운 편에 속하는 문제입니다.
문제를 읽어보시면 아시겠지만 주어진대로 계산이 이루어지도록 구현만 하면 됩니다.
추가적으로 주의하실 점은 결괏값을 저장하는 변수를 int타입으로 하시면 안 된다는 점입니다.
int의 경우는 보통 21억 정도까지 저장할 수 있는데, 해당 문제의 최악의 경우는 int의 범위를 벗어나기 때문입니다.
예를 들어서 모든 감독관은 1명만 감시할 수 있다고 하겠습니다.
그리고 시험장의 개수와 시험장에 있는 응시자의 수가 모두 1,000,000인 경우는 1000000 * 10000000만큼 연산을 해보면 필요한 감독관은 1조 명으로 int타입은 사용하면 안 됩니다.
해당 부분을 주의해서 코드를 작성하시면 되겠습니다.
2. Java로 문제 풀이
package study.blog.codingnojam.algorithm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_13458 {
// 백준온라인저지 13458번 시험감독 문제 풀이
public static void main(String[] args) throws IOException {
// 주어진 입력 정보 받기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 시험장 개수
int N = Integer.parseInt(br.readLine());
// 시험장에 있는 응시자의 수 배열
String[] arr = br.readLine().split(" ");
StringTokenizer st = new StringTokenizer(br.readLine());
// 총감독관이 감독할 수 잇는 응시자의 수
int B = Integer.parseInt(st.nextToken());
// 부감독관이 감독할 수 있는 응시자의 수
int C = Integer.parseInt(st.nextToken());
// 필요한 감독관의 수를 저장할 결과 값 변수
long count = 0;
// 시험장의 수만큼 반복문 실행
for (int i = 0; i < arr.length; i++) {
// 시험장의 응시자 수
int result = Integer.parseInt(arr[i]);
// 남은 응시자 수 = 응시자 수 - 총 감독관이 감독할 수 있는 응시자 수
result = result - B;
// 필요한 감독관 수 +1
count++;
// 남은 응시자 수가 0명 이하면 부감독관 필요없으므로 다음 시험장으로 이동
if (result <= 0) {
continue;
} else {
// 남은 응시자 수가 1명 이상일 때
// 남은 응시자 수 / 부감독관이 감독가능한 응시자 수
// 위의 나눗셈 연산을 통해서 몫과 나머지를 구함
int q = result / C; // 몫
int r = result % C; // 나머지
// 몫은 남은 응시자 감독에 필요한 부감독관의 수이므로 그대로 더해줌
count = count + q;
// 나머지가 1이상인 경우는 부감독관이 1명 더 필요하므로 감독관 수 +1 증가
if (r > 0) {
count++;
}
}
}
// 결과 값 출력
System.out.println(count);
}
}
코드에 대한 설명은 라인별로 모두 주석을 달아놓았습니다.
어려운 문제는 아니므로 쉽게 이해하실 수 있을 겁니다.
감사합니다.
728x90
'Algorithm & Data Structure > 문제풀이' 카테고리의 다른 글
[Algorithm] 백준온라인저지 10430번(BOJ-10430) 나머지 Java로 문제 풀이 (수학) (0) | 2021.07.21 |
---|---|
[Algorithm] 백준온라인저지 14499번(BOJ-14499) 주사위 굴리기 Java로 문제풀이(구현) (0) | 2021.07.20 |
[Algorithm] 백준온라인저지(BOJ) 14888번 연산자 끼워넣기 Java로 문제풀이!! (Backtracking) (0) | 2021.07.15 |
[Algorithm] 백준온라인저지 13460번 구슬 탈출2 Java로 문제풀이!! (BOJ-13460) (0) | 2021.07.12 |
[Algorithm] 백준온라인저지 1759번 암호 만들기 Java로 문제풀이!! (BOJ-1759) (0) | 2021.06.24 |
댓글