Koder / 박성훈
article thumbnail

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

 

1920번: 수 찾기

첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안��

www.acmicpc.net

#include <stdio.h>
#include <algorithm>

int input[100001] = {0};

int search(int arr[], int s, int e, int f){
	if(s>e) return 0;
	int mid=(s+e)/2;
	if(arr[mid] == f) return 1;
	else if(arr[mid] > f) return search(arr,s,mid-1,f);
	else return search(arr,mid+1,e,f);
}

int main(){
	int n,m,k;
	scanf("%d", &n);
	for(int i=0; i<n; i++) scanf("%d", &input[i]);
	std::sort(input, input+n);
	scanf("%d", &m);
	for(int i=0; i<m; i++){
		scanf("%d", &k);
		printf("%d\n", search(input,0,n,k));
	}
	return 0;
}

그냥 포문돌리면서 탐색하는건 시간초과가 날거같아서

이분탐색을 짜봤다.

이분탐색 하려면 정렬이 먼저 되있어야하므로

std::sort로 적당히 정렬해줬다.

반응형