BOJ/Python

백준 10815번 숫자 카드 파이썬

띵지니어 2022. 2. 14. 16:38

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

 

10815번: 숫자 카드

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

www.acmicpc.net

 

답안

def BS(target, data):
    start = 0
    end = len(data)-1
    while start <= end:
        mid = (start + end) // 2
        
        if data[mid] == target:
            return 1
        elif data[mid] < target:
            start = mid + 1
        else:
            end = mid - 1
            
    return 0

N = int(input())
N_card = sorted(list(map(int, input().split())))
M = int(input())
M_card = list(map(int, input().split()))

for i in M_card:
    print((BS(i, N_card)), end = ' ')

 

이진 탐색의 기본 문제이다.

출력만 좀 효율적이게 한다면 문제없이 풀었을 것이다.