출처 : 수 찾기
Solution
Python
import sys
input = sys.stdin.readline
def findInList(a, A, N):
# 가장 작은 값, 가장 큰 값
s, b = 0, N-1
# 이분 탐색 알고리즘
while s <= b:
n = (s+b)//2
# a를 찾으면 1 반환
if A[n]==a: return 1
# 현재 값이 a보다 크면, 큰 값을 현재 값의 -1
elif A[n] > a: b = n-1
# 현재 값이 a보다 작으면, 작은 값을 현재 값의 +1
elif A[n] < a: s = n+1
# 못 찾으면 0 반환
return 0
if __name__ == '__main__':
N = int(input())
A = list(map(int, input().split()))
M = int(input())
a = list(map(int, input().split()))
# 이진 탐색을 위해 A를 sort
A.sort()
# a 안의 각 값에 대해 이진 탐색 후 출력
for i in a:
print(findInList(i, A, N))
'''
if __name__ == '__main__':
N = int(input())
NA = list(map(int, input().split()))
M = int(input())
MA = list(map(int, input().split()))
# 해시를 이용하기 위해 dict 형태로 변환
A = {v:1 for v in NA}
# try except 구문을 활용해 간단히 풀이
for a in MA:
try:
if A[a]: print(1)
except: print(0)
'''
문제
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안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
출력
M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
예제 입력 1
5 4 1 5 2 3 5 1 3 7 9 5
예제 출력 1
1 1 0 0 1