- ์ ๋ ฌ๋ ๋ฆฌ์คํธ์ ๋ฒ์๋ฅผ ๋ฐ์ฉ ๋๋์ด ํ์์ ์งํํ๋ ๋ฐฉ๋ฒ
- ์ ๋ ฌ๋ ๋ฆฌ์คํธ์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
- ์๋๊ฐ ๋น ๋ฆ
์ํฉ |
์๋ |
์ต์ |
O(1) |
๋ณดํต |
O(logn) |
์ต์
|
O(logn) |
๋์
- ๋ฐฐ์ด์ ์ค๊ฐ๊ฐ ์ค์
- ์ค๊ฐ๊ฐ๊ณผ ๊ฒ์๊ฐ ๋น๊ต
- ๊ฒ์๊ฐ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ - ํ์์๋ฃ
- ๊ฒ์๊ฐ์ด ์ค๊ฐ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ - low๋ฅผ ์ค๊ฐ๊ฐ+1 ๋ก ์กฐ์
- ๊ฒ์๊ฐ์ด ์ค๊ฐ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ - high๋ฅผ ์ค๊ฐ๊ฐ-1 ๋ก ์กฐ์
- low๊ฐ high๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์๊ฒฝ์ฐ๊น์ง ๋ฐ๋ณต(๊ฐ์ ์ฐพ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด)
์ด์งํ์ ๊ตฌํ
def binarySearch(data, num):
low = 0
high = len(data) - 1
while(low <= high):
mid = (low + high) // 2
if num == data[mid]:
return True
elif num > data[mid]:
low = mid + 1
else :
high = mid - 1
return False
์ด์งํ์ ์ฌ์ฉ ์์ ์ฝ๋
n = int(input())
data1 = list(map(int,input().split()))
m = int(input())
data2 = list(map(int,input().split()))
data1.sort()
def binarySearch(data, num):
low = 0
high = len(data) - 1
while(low <= high):
mid = (low + high) // 2
if num == data[mid]:
return True
elif num > data[mid]:
low = mid + 1
else :
high = mid - 1
return False
for num in data2:
if binarySearch(data1, num) :
print(1)
else:
print(0)