26 Oct 2022

[Java] 백준 1920번: 수 찾기

1920

풀이 방법

탐색 문제이다.

재귀 함수를 곁들인 이분 탐색을 사용해서 문제를 해결했다.

다른 탐색 문제도 풀어보고 싶다!

풀이 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

public class BOJ_1920_수찾기 {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		int[] A = new int[N];
		
		for (int i = 0; i < N; i++) {
			A[i] = Integer.parseInt(st.nextToken());
		}
		
		int M = Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine());
		int[] B = new int[M];
		
		for (int i = 0; i < M; i++) {
			B[i] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(A);
		
		for (int i = 0; i < B.length; i++) {
			if(binarySearch(A, B[i], 0, N-1) == 1) System.out.println(1);
			else System.out.println(0);
		}
		
	}

	private static int binarySearch(int[] arr, int target, int low, int high) {
		if(low > high) return -1;
		
		int mid = (low + high) / 2;
		if(arr[mid] == target) {
			return 1;
		} else if(arr[mid] > target) {
			return binarySearch(arr, target, low, mid-1);
		} else {
			return binarySearch(arr, target, mid+1, high);
		}
		
	}

}
Thank You For Reading
SeungJun Jeon

점점 강해지고 있습니다.

comments powered by Disqus