[伯俊10816]デジタルカード2-JAVA
15290 ワード
問題のソース
https://www.acmicpc.net/problem/10816
に答える
コード#コード#
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 IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int[] arr = new int[N];
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.valueOf(stringTokenizer.nextToken());
}
Arrays.sort(arr);
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int M = Integer.parseInt(stringTokenizer.nextToken());
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < M; i++) {
int key = Integer.parseInt(stringTokenizer.nextToken());
stringBuilder.append(upperBound(arr, key) - lowerBound(arr, key)).append(" ");
}
System.out.println(stringBuilder);
}
public static int lowerBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
while (lo < hi) {
int mid = (lo + hi) / 2;
if (key <= arr[mid]) {
hi = mid;
} else {
lo = mid + 1;
}
}
return lo;
}
public static int upperBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
while (lo < hi) {
int mid = (lo + hi) / 2;
if (key < arr[mid]) {
hi = mid;
} else {
lo = mid + 1;
}
}
return lo;
}
}
採点結果
Reference
この問題について([伯俊10816]デジタルカード2-JAVA), 我々は、より多くの情報をここで見つけました https://velog.io/@jm_25/백준10816-숫자-카드-2-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol