문제 풀이 시나리오
1. lower,uppper 인덱스로 이분탐색 메서드 구현
2. StringBuilder 로 1또는 0(공백으로 구분)출력
문제
풀이
package baekjoon;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
//상근이가 가지고 있는 수들을 배열에 저장
//두번째로 입력받은 수들이 배열에 있는지 이분탐색
//있으면 1 없으면 0 (공백으로 구분)
public class Main {
//이분탐색 -> 시간초과 x
public static boolean binarySearch(int[] ar, int n) {
int leftIndex = 0;
int rightIndex = ar.length-1;
while(leftIndex <= rightIndex) {
int midIndex = (leftIndex + rightIndex) /2 ;
int mid = ar[midIndex];
if( n < mid)
rightIndex = midIndex - 1;
else if( n > mid)
leftIndex = midIndex + 1;
else
return true;
}
return false;
}
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();
//이분탐색을 해서 해당 숫자가 있는 경우
if (binarySearch(arr , input) ) {
sb.append("1 ");
}//이분 탐색을 해서 해당 숫자가 없는 경우
else {
sb.append("0 ");
}
}
System.out.println(sb);
}
}
'백준' 카테고리의 다른 글
[자바 :: 1181 단어 정렬] (0) | 2022.07.30 |
---|---|
[자바 :: 백준 11650 좌표 정렬하기] (0) | 2022.07.30 |
[자바 :: 백준 2750 수 정렬하기(중복된 수 없음) ] (0) | 2022.07.30 |
[자바 :: 프로그래머스 정수 내림차순으로 나열하기 ] (0) | 2022.07.28 |
[자바 :: 백준 11651 : 좌표 정렬하기2 #두가지 방법# ] (0) | 2022.07.28 |