728x90
반응형
문제 출처:https://www.acmicpc.net/problem/1920
풀이1: 이분탐색 안 쓰고 푸는법
import sys
n = int(input())
N = set(map(int,input().split())) # list 로 받으면 시간초과가 나기 때문에 set으로 받음
m = int(input())
M = map(int,input().split())
for num in M:
print(1) if num in N else print(0)
풀이2: 이분탐색 사용
def binary(i, N, start, end):
if start > end:
return 0
m = (start+end)//2 # 중앙 값 = m
if i == N[m]: # i가 중앙에 중앙값이면
return 1 # 그대로 리턴
elif i < N[m]: # 작으면
return binary(i, N, start, m-1) # 큰부분 다 자르고 다시시작
else: # 아니면
return binary(i, N, m+1, end) # 작은부분 다 자르고 다시시작
for i in M:
start = 0
end = len(N)-1
print(binary(i, N, start, end)) # 리스트 M 중에 1개씩 가져와서 넘겨줌
반응형
댓글