10815 : 숫자카드

서희찬·2021년 10월 5일
0

백준

목록 보기
56/105

문제

코드


import sys 
sys.setrecursionlimit(10**9)

def bsr(target,start,end,data):
    if start>end :
        return None 
    mid = (start+end)//2
    if data[mid]==target:
        return 1
    elif data[mid]>target:
        end = mid -1
    else:
        start = mid + 1
    return bsr(target,start,end,data)

n = int(input())
arr1 = list(map(int,input().split()))
m = int(input())
arr2 = list(map(int,input().split()))

arr1.sort()
for i in range(m):
    if bsr(arr2[i],0,n-1,arr1):
        print(1,end=' ')
    else : 
        print(0,end=' ')

해설

상근이가 가지고 있는 카드를 정렬 한 후 이진탐색알고리즘을 활용하여 내가 선택한 숫자를 상근이가 가지고 있는지 확인하는 문제이다.
이진탐색을 재귀로 구현안하니 시간초과라고 떴다.
그릭 인덱스 에러도 떠서 수정해주고, 재귀의 깊이를 늘려주고 돌린 결과가 재귀의 깊이를 늘리기전보다 더 빨랐다..
왠지는 모르겠다.

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글