๋ฐฑ์ค (boj) ํ์ด์ฌ - 1920๋ฒ : ์ ์ฐพ๊ธฐ
๋ฌธ์ ๋งํฌ : https://www.acmicpc.net/problem/1920
1920๋ฒ: ์ ์ฐพ๊ธฐ
์ฒซ์งธ ์ค์ ์์ฐ์ N(1≤N≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ N๊ฐ์ ์ ์ A[1], A[2], …, A[N]์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M(1≤M≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M๊ฐ์ ์๋ค์ด ์ฃผ์ด์ง๋๋ฐ, ์ด ์๋ค์ด A์๏ฟฝ๏ฟฝ
www.acmicpc.net
๋๊ฐ์ ๋ฆฌ์คํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ฒซ๋ฒ์งธ ๋ฆฌ์คํธ๊ฐ ํ์ํ ๋์์ด๊ณ , ๋๋ฒ์งธ ๋ฆฌ์คํธ์ ๊ฐ ์์๊ฐ target ์ด๋ค.
์ด๋ฅผ for๋ฌธ์ ํตํด ๊ฐ๊ฐ ์ด๋ถํ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ด์งํ์ , ์ด๋ถํ์
https://infinitt.tistory.com/286
์๊ณ ๋ฆฌ์ฆ ) ์ด์ง ํ์, ์ด๋ถ ํ์ (Binary serach) _ python ์ฌ๊ท
* ์ด์ง ํ์ (Binary serach) ๊ฐ๋ ํ์ ์๊ณ ๋ฆฌ์ฆ ์ค์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ค ํ๋์ด๋ค. ์์ฐจํ์(linear search)์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ ์์๋๋ก ์ฐพ์ ๋์์ด ๋์ฌ๋๊น์ง ๊ฒ์ํด ๋๊ฐ๋ค. ์ด์ง ํ์์ ๏ฟฝ๏ฟฝ
infinitt.tistory.com
*ํ์ด์ฌ ์ฝ๋
N = int(input())
arr_n = list(map(int,input().split()))
arr_n.sort()
M = int(input())
arr_m = list(map(int,input().split()))
for i in arr_m:
start = 0
end = N-1
target = i
answer = 0
while (start <= end):
mid = (start+end) //2
if arr_n[mid] == target:
answer = 1
break
elif target < arr_n[mid]:
end = mid-1
else:
start = mid+1
print(answer)