문제 풀이 시나리오 ::
1. 배열에 원소가 여러개 있을 수 있는 문제임을 확인
2. 원소의 최소 인덱스를 반환하는 메서드 lower() 구현
3. 원소의 최대 인덱스 + 1 을 반환하는 메서드 upper()구현
4. 배열에 포함된 원소의 개수(upper - lower)를 공백으로 구분하여 출력
문제
풀이
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static int upper(int[] arr, int target) {
int lower=0;
int upper = arr.length ;
//while문 탈출 -> lower = mid + 1
while(lower<upper) {
int mid=(lower+upper)/2;
if (target >= arr[mid])
lower = mid + 1;
else
upper = mid;
}//최대 인덱스 + 1 반환
return lower;
}
public static int lower(int[] arr, int target) {
int lower = 0;
int upper = arr.length;
//while문 탈출 -> lower = mid + 1
while(lower < upper) {
int mid = (lower+upper)/2;
if(target <= arr[mid])
upper = mid ;
else
lower = mid + 1;
}//최소 인덱스 + 0 반환
return lower;
}
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int n = scan.nextInt();
int[] arr = new int[n];
//한줄 입력 받기
for (int i = 0; i< n ;i++) {
arr[i]=scan.nextInt();
}
//배열 정렬
Arrays.sort(arr);
int m = scan.nextInt();
for (int i = 0; i< m ;i++) {
int input = scan.nextInt();
sb.append(upper(arr,input)-lower(arr,input) + " ");
}
System.out.print(sb);
}
}
'백준' 카테고리의 다른 글
[자바 :: 백준 1966 프린터 큐] (0) | 2022.08.02 |
---|---|
[자바 :: 프로그래머스 제일 작은 수 제거하기] (0) | 2022.08.01 |
[자바 :: 백준 2675 문자열 반복] (0) | 2022.07.31 |
[자바 :: 백준 10809 알파벳 찾기] (0) | 2022.07.31 |
[자바 :: 백준 11720 숫자의 합] (0) | 2022.07.31 |