<aside> 🔥 이 문제는 이것이 코딩테스트다 교재에 실린 문제로, 따로 제출할 수 없다.

</aside>

문제 정리

n의 정수가 주어지고 n개의 숫자가 제시된다.

m의 정수가 주어지고 m개의 숫자가 제시된다.

m개의 숫자가 n개의 숫자에 포함되는지 확인하는 문제이다.

접근방법

재귀방식으로 이진탐색을 시작해서 타겟을 찾을 경우 yes를 출력, 아닐 경우 no를 출력하도록 했다.

코드

이진 탐색 코드

def binary_search(arr, target, lo, hi):
    if lo <= hi:
        mid = (lo + hi) // 2
        if arr[mid] < target:
            return binary_search(arr, target, mid + 1, hi)
        elif arr[mid] > target:
            return binary_search(arr, target, lo, mid - 1)
        else:
            return mid

m개의 숫자를 돌면서 타겟을 넘겨주기

for target in m_li:
    if binary_search(n_li, target, 0, len(n_li) - 1):
        print("yes")
    else:
        print('no')

결과

예제문제 모두 잘 통과 되었다. 다만 제출을 못해서 완벽하게 통과가 될지 궁금하긴 하다.