728x90
// 220512
import java.io.*;
import java.util.*;
public class Main {
public static int lower_bound(int n, int a[], int k) {
int start = 0, end = n - 1, mid = 0;
while (start <= end) {
mid = (start + end) / 2;
if (a[mid] >= k) end = mid - 1;
else start = mid + 1;
}
return start;
}
public static int upper_bound(int n, int a[], int k) {
int start = 0, end = n - 1, mid = 0;
while (start <= end) {
mid = (start + end) / 2;
if (a[mid] > k) end = mid - 1;
else start = mid + 1;
}
return start;
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int a[] = new int[n], i;
StringTokenizer st = new StringTokenizer(br.readLine());
for (i = 0; i < n; ++i)
a[i] = Integer.parseInt(st.nextToken());
Arrays.sort(a);
int m = Integer.parseInt(br.readLine()), num;
st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
for (i = 0; i < m; ++i) {
num = Integer.parseInt(st.nextToken());
sb.append((upper_bound(n, a, num) - lower_bound(n, a, num)) + " ");
}
br.close();
System.out.println(sb.toString());
}
}
예)
10 ( int n )
6 3 2 10 10 10 -10 -10 7 3 ( int a[] )
8 ( int m )
10 9 -5 2 3 4 5 -10 ( int k (StringTokenizer) )
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 2805 : 나무 자르기 / 이분 탐색 (0) | 2020.09.08 |
---|---|
[백준(Baekjoon)][자바(java)] 1654 : 랜선 자르기 / 이분 탐색 (0) | 2020.09.08 |
[백준(Baekjoon)][자바(java)] 1920 : 수 찾기 & 10815 : 숫자 카드 / 이분 탐색 (0) | 2020.09.08 |
[백준(Baekjoon)][자바(java)] 2261 : 가장 가까운 두 점 / 분할 정복 (0) | 2020.08.28 |
[백준(Baekjoon)][자바(java)] 6549 : 히스토그램에서 가장 큰 직사각형 / 분할 정복 (0) | 2020.08.28 |