백준 실버4 문제입니다. 실전에 대비하기 위해 60분 시간제한을 두고 풀었습니다.
문제
https://www.acmicpc.net/problem/1920
[나의 풀이]
⌛ 10분
def binary_search(A,x):
    start = 0
    end = len(A)-1
    while start<=end:
        print("----------")
        mid = (start+end)//2
        if A[mid]==x:
            print(1)
            return
        elif A[mid]>x:
            end = mid-1
        else:
            start = mid+1
    print(0)
N = int(input())
A = list(map(int,input().split()))
M = int(input())
B = list(map(int,input().split()))
A.sort()
for b in B:
    binary_search(A,b)
입력된 수의 배열(N) 중 찾고자 하는 숫자(M)가 있는지 판별하는 문제입니다.
입력된 배열을 정렬하고 이분탐색을 구현하여 어렵지 않게 해결할 수 있었습니다.
[다른 사람의 풀이1]
from sys import stdin, stdout
n = stdin.readline()
N = sorted(map(int,stdin.readline().split()))
m = stdin.readline()
M = map(int, stdin.readline().split())
def binary(l, N, start, end):
    if start > end:
        return 0
    m = (start+end)//2
    if l == N[m]:
        return 1
    elif l < N[m]:
        return binary(l, N, start, m-1)
    else:
        return binary(l, N, m+1, end)
for l in M:
    start = 0
    end = len(N)-1
    print(binary(l,N,start,end))
'나의 풀이'와 같이 이분탐색을 활용하되 재귀함수로 구현한 모습입니다.
[다른 사람의 풀이2]
N = int(input())
nArray = set(map(int, input().split()))
M = int(input())
mArray = list(map(int, input().split()))
for i in range(M):
    if mArray[i] in nArray:
        print("1")
    else:
        print("0")
실버5 단계의 문제이기 때문에 시간복잡도가 널널하여 단순 loop문을 활용하여 풀어낼 수도 있었습니다.
감사합니다.