

1. N을 입력받음
2. N개의 수를 입력받고 int형 배열에 저장한 뒤 오름차순 정렬함
3. M을 입력받음
4. int배열과 찾아야 할 값인 target을 인자로 받아 이분탐색하는 함수를 작성함
4-1. low = 0 , high = arr.length-1로 초기화함
4-2. low<=high인 동안 아래 과정을 반복함
4-2-1. mid = (low+high)/2를 계산함
4-2-2. arr[mid] == target인 경우 1을 반환함
4-2-3. 그렇지 않은 경우 low와 high의 값을 적절히 바꿔줌
4-3. 4-2의 반복문이 끝날 때까지 함수가 1을 반환하지 않았다는 건,
target이 arr에 없다는 뜻이므로 0을 반환함
5. 함수가 반환한 값을 출력함
import java.io.*; import java.util.*; public class Main{ public static void main(String args[])throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] 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()); for(int i=0;i<M;i++){ int t = Integer.parseInt(st.nextToken()); System.out.print(find(arr,t)+" "); } } static int find(int[] arr, int target){ int low = 0; int high = arr.length-1; while(low<=high){ int mid = (low+high)/2; if(arr[mid]==target){ return 1; } else if(arr[mid]>target){ high = mid-1; } else{ low = mid+1; } } return 0; } }
'Algorithm > [BOJ] - JAVA' 카테고리의 다른 글
[백준] 10789 : 세로읽기 Java (0) | 2024.01.17 |
---|---|
[백준] 1931 : 회의실 배정 JAVA 풀이 (0) | 2022.11.02 |
[백준] 2783 : 삼각 김밥 JAVA 풀이 (0) | 2022.11.02 |
[백준] 1783 : 병든 나이트 JAVA 풀이 (0) | 2022.10.30 |
[백준] 2875 : 대회 or 인턴 JAVA 풀이 (0) | 2022.10.30 |