https://www.acmicpc.net/problem/13458
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
StringTokenizer st;
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
int b = Integer.parseInt(st.nextToken()); // 총감독관이 한 시험장에서 감시할 수 있는 응시자 수
int c = Integer.parseInt(st.nextToken()); // 부감독관이 한 시험장에서 감시할 수 있는 응시자 수
long cnt = 0;
for (int i = 0; i < n; i++) {
if (arr[i] <= b) { // 한 시험장의 응시자수가 b보다 작으면
cnt++; // 총감독관 1명만 증가
continue;
}
arr[i] -= b; // 총감독관 한명이 감시할 수 있는 응시자수만큼 감소
cnt++; // 총감독관 1명 증가
// 필요한 부감독관 수 계산
if (arr[i] % c == 0) cnt += arr[i] / c;
else cnt += (arr[i] / c) + 1;
}
System.out.println(cnt);
}
}
예제 케이스에는 없었지만 한 시험장의 응시자 수가 b보다 작을 때를 고려해야 한다. 이 점을 놓쳐서 처음에 틀렸다.
그리고 주의해야할 점은 시험장의 수가 최대 1,000,000 이고 각 시험장의 응시자수가 최대 1,000,000이므로
최대 백만 x 백만 정도의 감독관의 수가 나올 수 있고 int형 범위인 20억을 넘어가 버린다.
따라서 결괏값을 long형으로 해줘야 한다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 알고리즘 : 그리디- 친구인가? (Disjoint-Set : Union&Find) (0) | 2022.11.25 |
---|---|
[JAVA] 알고리즘 : 그리디- 다익스트라 알고리즘 (0) | 2022.11.25 |
[JAVA] 백준 1946- 신입 사원 (0) | 2022.11.24 |
[JAVA] 백준 11000- 강의실 배정 (0) | 2022.11.24 |
[JAVA] 백준 2217- 로프 (0) | 2022.11.23 |