출처: https://www.acmicpc.net/problem/1920

문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수들의 범위는 int 로 한다.

출력

M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.

소스코드

import sys
input = sys.stdin.readline

n = int(input())
numN = list(map(int, input().strip().split()))
m = int(input())
numM = list(map(int, input().strip().split()))

def BinarySearch(target, list):
    lower = 0
    upper = len(list) - 1
    while lower <= upper:
        mid = (lower + upper) // 2
        if list[mid] < target:
            lower = mid + 1
        elif list[mid] > target:
            upper = mid - 1
        else:
            return True
    return False

numN.sort()
for i in range(m):
    if BinarySearch(numM[i], numN):
        print(1)
    else:
        print(0)

풀이

이분 탐색으로 해결한 문제.
처음에는 index를 두고 target의 index를 가리킬 때 True를 return하도록 코드를 짰지만 필요 없다는 것을 알고 지웠다.