불로구

[백준 - 1920 ] - 수찾기 ( JAVA ) 본문

코딩테스트/백준

[백준 - 1920 ] - 수찾기 ( JAVA )

맹이맹이 2021. 2. 11. 17:58
반응형

시간초과를 해결하기 위해 이진탐색이 필요 한 문제이다.

 

package 백준.문제1920;

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

public class Main {
	public static int sol(int a[], int key) {
		int start = 0;
		int end = a.length - 1;
		int result = 0;
		
		do {
			int center = (start + end ) / 2;
			if(a[center] == key) {
				result = 1;
				break;
			}else if(a[center] < key) {
				start = center + 1;
			}else {
				end = center - 1;
			}
		}while(start <= end);
		return result;
	}
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int arr[] = new int[s.nextInt()];
		for(int i=0; i<arr.length; i++) {
			arr[i] = s.nextInt();
		}
		Arrays.sort(arr);
		
		int num = s.nextInt();
		for(int i=0; i<num; i++) {
			System.out.println(sol(arr,s.nextInt()));
		}
	}
}

 

궁금한점은 댓글 달아주세요.

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 7568 (JAVA) - 덩치  (0) 2021.03.06
백준 2231(JAVA) - 분해합  (0) 2021.03.06
백준 2798 (JAVA) - 블랙잭  (0) 2021.03.06
[백준 - 10816 ] - 숫자카드2( JAVA )  (0) 2021.02.11
Comments