728x90
문제
https://www.acmicpc.net/problem/13458
풀이
걍 쉬운 문제라서 풀었는데 자꾸 틀렸다.
그래서 다시 문제를 보니
첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.
셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
주어지는 값들의 범위가 장난이 아니다 ㅋㅋㅋㅋㅋㅋㅋ
최악의 경우는 B와 C가 모두 1이고, N이 1,000,000, 모든 A가 1,000,000일 때인데, 이렇게 되면 답이 1,000,000,000,000이다!
인트형은 양의 정수일 경우 약 23억 정도로 알고 있는데 암튼 그 정도 값은 그냥 넘는다.
그래서 반환하는 값(정답)의 타입을 long형으로 하니까 통과가 됐다!
꼭 문제를 잘 읽고 어느정도는 키보드에 손을 올리기 전에 어림잡아서 계산을 하는 버릇을 들여야겠당
코드
// 13458번 시험 감독
// https://www.acmicpc.net/problem/13458
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Num13458_시험감독 {
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
arr = new int[N];
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());
System.out.println(solution(arr, B, C));
}
private static long solution(int[] arr, int B, int C) {
long count = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] -= B;
count++;
if (arr[i] > 0) {
count += arr[i] / C;
if (arr[i] % C != 0) {
count++;
}
}
}
return count;
}
}
728x90