BOJ

백준 10815. 숫자 카드 [Python]

Hoo_Dev 2022. 6. 10. 20:50
 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

def search(t, l, r):
    global num_lst
    global target_num
    global ans

    while l <= r:
        m = (l + r) // 2

        if num_lst[m] == t:
            ans.append(1)
            return
        elif t < num_lst[m]:
            search(t, l, m - 1)
            return
        else:
            search(t, m + 1, r)
            return
    ans.append(0)
    return


N = int(input())
num_lst = list(map(int, input().split()))
M = int(input())
target_num = list(map(int, input().split()))
num_lst.sort()
ans = []

for i in target_num:
    search(i, 0, N - 1)
    
print(*ans)

이분탐색을 이용한 풀이 (이분탐색의 기본은 정렬 된 배열이어야 한다.)

'BOJ' 카테고리의 다른 글

[백준 1260 / 파이썬 풀이] DFS와 BFS  (0) 2023.03.20
백준 6603. 로또 [Python]  (0) 2022.06.14
백준 15657. N과 M (8) [Python]  (0) 2022.06.04
백준 15656. N과 M (7) [Python]  (0) 2022.06.04
백준 15655. N과 M (6) [Python]  (0) 2022.06.04