알고리즘/백준

1920_수 찾기 **

베리영young 2024. 1. 21. 14:05

사용 알고리즘: 이분탐색

사용 언어: java

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main_1920_수찾기 {
    static int n;
    static int[] arr;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        Arrays.sort(arr);

        int m = sc.nextInt();
        for (int i = 0; i < m; i++) {
            int findVal = sc.nextInt();
            System.out.println(binarySearch(findVal));
        }
    }

    private static int binarySearch(int findVal) {
        int left = 0;
        int right = arr.length-1;

        while(left <= right) {
            int middle = (left+right)/2;

            //종료조건1. middle이 가리키는 곳에 findVal이 있다. 1리턴
            if(arr[middle] == findVal) return 1;
            //진행: 이동
            if (arr[middle] < findVal) left = middle+1;
            else right = middle-1;
        }
        //종료조건2. left>=right 0리턴 (찾을 수 없는 값)
        return 0;
    }
}

 

 

이슈:

이분 탐색! 반 끊어놓고 시작!

 

 

'알고리즘 > 백준' 카테고리의 다른 글

2644_촌수계산  (0) 2024.01.23
5567_결혼식 **  (0) 2024.01.21
2583_영역 구하기 **  (0) 2024.01.19
7576_토마토  (1) 2024.01.14
14503_ 해결 못 함  (0) 2024.01.09