t_부품찾기_197

source github.com/ndb796/python-for-coding-test
type 📌 개발노트
topics 600-알고리즘 & 코딩테스트 610 이진탐색 611 정렬
types 문제풀이

  • 천만계이상이라 이진탐색으로하는게 좋다
  • 계수정렬로도 충분히구현가능하다(시간복잡도는 낮으나 메모리많이소요)
  • 그냥 반복문 쓸꺼면 set을 이용하는편이 낫다.
    search함수에서 Return을 안해주는 오류를 범했다.
    return 을안해주면 재귀에서의 응답이 최종적으로 도출이안된다.
import sys

n = int(sys.stdin.readline().strip())
narr = list(map(int, sys.stdin.readline().strip().split()))
m = int(sys.stdin.readline().strip())
marr = list(map(int, sys.stdin.readline().strip().split()))

narr.sort()

def search(num,start,end):
    if start > end:
        return False
    mid = (start+end)//2
    if narr[mid] == num:
        return True
    elif narr[mid] < num :
        return search(num,mid+1,end)
    return search(num,start,mid-1)

ans = []
for ma in marr:
    tmp = 'yes' if search(ma,0,n-1) else 'no'
    ans.append(tmp)

print(" ".join(ans))