알고리즘/백준

10815_숫자 카드

베리영young 2024. 10. 27. 08:51

사용 알고리즘: 이분탐색? 투포인터?

사용 언어: java

 

아주 전형적인  이분탐색이군

 

package week21;

import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int[] cards = new int[n];
		for(int i=0; i<n; i++)
			cards[i] = sc.nextInt();
		Arrays.sort(cards);
		
		int m = sc.nextInt();
		int[] f = new int[m];
		for(int i=0; i<m; i++)
			f[i] = sc.nextInt();
		
		int[] ans = new int[m];
		for(int pivot = 0; pivot<m; pivot++) { //f의 피봇
			int left = 0;
			int right = n-1;
			
			while(left <= right) {
				int mid = (left + right) / 2;
				if(cards[mid] < f[pivot]) {
					left = mid + 1;
				}
				else if(f[pivot] < cards[mid]){
					right = mid - 1;
				}
				else {
					ans[pivot] = 1;
					break;
				}
			}
		}
		
		//
		for(int i=0; i<m; i++)
			System.out.print(ans[i]+" ");
	}

}