wnscjf1124   8년 전

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

public class 이진탐색숫자카드 {
 static int first;
 
 static int[] a;
 public static void main(String[] args) {
 Scanner sc= new Scanner(System.in);
 first=sc.nextInt();
      a = new int[first];
 for (int i = 0; i <first; i++) {
  
  int a1=sc.nextInt();
  a[i]=a1; 
 }
 Arrays.sort(a); 
 int last = sc.nextInt();
 int[] b= new int[last];
 
 int b2;
 for (int i=0; i<last; i++) {  
   b2=sc.nextInt();
  
  b[i]=b2; 
  b[i]=binary(b[i]);
  System.out.println(b[i]);
  
 }  

 public static int binary(int x){
  int left=0;
  int right=first-1;
   while (left  <= right) {
  int mid=left+(right-left)/2;
  if (a[mid]==x /*|| right==a[mid]*/) {
   return 1;
   
  }else if(a[mid]>x){
   right=mid-1;
  }else{
   left=mid+1;  
  }  
 }
   return 0;
 } 
}

 

더 효율적인 코드가 생각이 안나네요 ㅠㅠ

indioindio   8년 전

Scanner보다는 BufferedReader였나 쓰시면 입력속도에서 이득을 보실 수 있습니다.

댓글을 작성하려면 로그인해야 합니다.