728x90
수 찾기
https://www.acmicpc.net/problem/1920
1920번: 수 찾기
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들
www.acmicpc.net
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
int[] array = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Arrays.sort(array);
int M = Integer.parseInt(br.readLine());
int[] searchArr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Arrays.stream(searchArr).forEach(i -> search(array, i));
}
/**
* 이분 탐색 수행
*/
private static void search(int[] array, int i) {
System.out.println(biSearch(array,0, array.length-1, i));
}
private static int biSearch(int[] array, int start, int end, int search){
if(start > end){
return 0;
}
int mid = (end+start)/2;
if(array[mid] > search){
return biSearch(array, start, mid-1, search);
}else if(array[mid] < search){
return biSearch(array, mid+1, end, search);
}
else{
return 1;
}
}
}
728x90
'Algorithm > 백준' 카테고리의 다른 글
[백준/1654/Java] 랜선 자르기 (0) | 2022.02.14 |
---|---|
[백준/10816/Java] 숫자 카드 2 (0) | 2022.02.13 |
[백준/2206/Java] 벽 부수고 이동하기 (0) | 2022.02.12 |
[백준/7562/Java] 나이트의 이동 (0) | 2022.02.10 |
[백준/1697/Java] 숨바꼭질 (0) | 2022.02.09 |