🥟 Java/코딩테스트

[백준 1920] 수 찾기 - Java

꾸씅이 2025. 6. 7. 23:53

📌 문제 링크

https://www.acmicpc.net/problem/1920

 

 

📄 문제 설명

🧠 문제 접근

이번 문제는 이진 탐색을 사용하여 풀었다.

 

먼저 A[N] 배열을 탐색하기 좋게 정렬을 시킨다.

 

그 다음 이진 탐색을 위한 함수를 별도로 분리하여 호출한다.

 

 

 

✅ 내가 제출한 코드

 

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

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());
        String[] s1 = br.readLine().split(" ");

        int[] A = new int[N];

        for(int i = 0; i < N; i++) {
            A[i] = Integer.parseInt(s1[i]);
        }

        Arrays.sort(A);

        int M = Integer.parseInt(br.readLine());

        String[] s2 = br.readLine().split(" ");
        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < M; i++) {
            int b = Integer.parseInt(s2[i]);
            sb.append(binarySearch2(b,0, N-1, A) + "\n");
        }

        System.out.println(sb);
    }


    public static int binarySearch2(int key, int low, int high, int[] A) {
        int mid;

        while(low <= high) {
            mid = (low + high) / 2;

            if(key == A[mid]) {
                return 1;
            } else if(key < A[mid]) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }

        return 0; // 탐색 실패
    }
}