풀이 및 해설(주석) [자바]
import java.io.*;
import java.util.*;
public class Main {
public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
int[] arr1 = new int[N];
StringTokenizer st = new StringTokenizer(bf.readLine());
for (int i = 0; i < N; i++) {
arr1[i] = Integer.parseInt(st.nextToken());
}
int M = Integer.parseInt(bf.readLine());
int[] arr2 = new int[M];
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < M; i++) {
arr2[i] = Integer.parseInt(st.nextToken());
}
// binarySearch를 위해 arr1을 정렬
Arrays.sort(arr1);
for (int i = 0; i < M; i++) {
int nowNum = arr2[i];
// binarySearch를 통해 인덱스가 0이상이면 1
if (Arrays.binarySearch(arr1, nowNum) >= 0) {
sb.append("1");
sb.append("\n");
// -정수가 나온 경우 배열에 없다는 의미이므로 0
}else {
sb.append("0");
sb.append("\n");
}
}
System.out.println(sb);
}
}
풀이 [파이썬]
import sys;
def solve(start, end, num):
if start >= end:
print(0)
return
mid = (start+end) // 2
if arr1[mid] == num:
print(1)
return
if arr1[mid] < num:
solve(mid+1, end, num)
else:
solve(start, mid, num)
if __name__ == '__main__':
N = int(sys.stdin.readline().strip())
arr1 = list(map(int, sys.stdin.readline().strip().split()))
M = int(sys.stdin.readline().strip())
arr2 = list(map(int, sys.stdin.readline().strip().split()))
arr1.sort()
for num in arr2:
solve(0, N, num)
'백준' 카테고리의 다른 글
백준 1463 1로 만들기 (파이썬) (2) | 2023.01.16 |
---|---|
백준 1074 Z (파이썬) (0) | 2022.12.25 |
백준 1926 그림 (파이썬, 자바) (0) | 2022.12.18 |
백준 1461 도서관 (파이썬) (0) | 2022.12.15 |
백준 3015 오아시스 재결합 (파이썬) (0) | 2022.12.14 |