💡 문제

💬 입출력 예시

📌 풀이(소스코드)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int n, m;
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; i++) {
System.out.println(binarySearch(Integer.parseInt(st.nextToken())));
}
}
static int binarySearch(int key) {
int start = 0;
int end = arr.length - 1;
while (start <= end) {
int mid = (end + start) / 2;
if (arr[mid] < key) {
start = mid + 1;
} else if (key < arr[mid]) {
end = mid - 1;
} else {
return 1;
}
}
return 0;
}
}
📄 해설
- 이진탐색을 사용하여 해결하는 문제
- N 개의 수를 입력받고 배열에 저장
- M 개의 수를 입력 받으면서 이진탐색을 수행하여 배열에 그 수가 존재하면 1을 반환하고 아니면 0을 반환하도록 이진탐색 메소드를 구현