[Python] 알고리즘/Silver

[10815] 숫자 카드 (Python)

-Becca- 2021. 10. 29. 16:50

[문제]

https://www.acmicpc.net/problem/10815

 

10815번: 숫자 카드

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

www.acmicpc.net


알고리즘 분류는 정렬, 이분 탐색 입니다.

2번째 줄에 입력받은 카드를 정렬하고, 4번째 줄에 입력받은 카드를 이분 탐색으로 찾아야 합니다.


[코드]

import sys


def binary(data, find):
    left = 0
    right = len(data) - 1

    while left <= right:
        mid = (left + right) // 2

        if data[mid] == find:
            return "1"
        elif data[mid] < find:
            left = mid + 1
        elif data[mid] > find:
            right = mid - 1

    return "0"


N = int(sys.stdin.readline())
card_N = sorted(list(map(int, sys.stdin.readline().split())))
M = int(sys.stdin.readline())
card_M = list(map(int, sys.stdin.readline().split()))

res = list()
for i in card_M:
    res.append(binary(card_N, i))

for i in res:
    print(i, end=" ")