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
- 풀이 방법[알고리즘]
단순 수학 계산 문제인데 처음에 생각없이 타입설정을 해서 틀렸다. 반의 수만큼 총 감독관을 빼고, 남은 인원을 부 감독관으로 나눈다. 이후 올림해줘서 최소 인원을 충족시켰다. 응시생 수가 최대 100만이어서 처음 answer타입을 int로 설정했을 때, 돌리자마자 틀렸습니다가 나왔다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] A = new int[N];
for (int i = 0; i < A.length; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
int[] BC = new int[N];
// 총감독관이 보는 학생
int B = Integer.parseInt(st.nextToken());
// 부감독관이 보는 학생
int C = Integer.parseInt(st.nextToken());
// 각 시험장마다 필요한 부감독관의 수
long[] help = new long[N];
for (int i = 0; i < A.length; i++) {
if (A[i] < B) {
continue;
} else {
help[i] = (long) Math.ceil((double)(A[i] - B) / C);
} // if
} // FOR
long answer =N;
for (int i = 0; i < help.length; i++) {
answer+=help[i];
}
System.out.println(answer);
}
}
'알고리즘 문제 > JAVA' 카테고리의 다른 글
[백준]14051번: 퇴사(JAVA) (0) | 2023.04.17 |
---|---|
[SWEA]5215번:햄버거 다이어트(JAVA) (1) | 2023.04.07 |
[SWEA]14510번:나무 높이(JAVA) (0) | 2022.12.02 |
[SWEA]2112번:보호필름(JAVA) (0) | 2022.11.16 |
[SWEA]4193번:수영대회결승전(JAVA) (1) | 2022.11.16 |