현재
[Java][BaekJoon][1920] 수 찾기(이분탐색법,binarySearch) 본문
https://www.acmicpc.net/problem/1920
<이 문제에서 얻어가야 할 것>
이분탐색법 이론, 기본 알고리즘 작성, Arrays.binarySerach()
<힌트>
더보기
이분 탐색 코드 작성시 low값, high값, 미드값
<풀이코드>
더보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static int[] arr;
public static void main (String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for(int i = 0 ; i < N ; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
//이분탐색법을 사용하기 위해 한번 정렬
Arrays.sort(arr);
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine()," ");
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < M ; i++){
if(binarySearch(Integer.parseInt(st.nextToken())) >= 0){
sb.append("1").append('\n');
} else {
sb.append("0").append('\n');
}
}
System.out.println(sb);
}
public static int binarySearch(int value){
int low = 0;
int high = arr.length - 1;
while(low <= high){
int mid = (low + high)/2;
if( value < arr[mid] ){
high = mid -1;
}
else if( value > arr[mid] ){
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
| [Java][BaekJoon][11866] 요세푸스 문제0(Queue) (0) | 2024.05.04 |
|---|---|
| [Java][BaekJoon][10814] 나이순정렬(Comparator) (0) | 2024.05.04 |
| [Java][BaekJoon][1181] 단어정렬(Comparator) (1) | 2024.04.23 |
| [Java][Bronze V] 오늘 날짜 - 10699 (Date, DateFormat) (1) | 2023.11.25 |
| [Java][BaekJoon][2581] 소수 (0) | 2023.10.23 |