백준 문제 링크
CD
- while문으로 시작하여 N,M, array_N, array_M을 받아준다.
만약 N,M이 모두 0 이면 break한다.- array_M의 원소동안
기본 이분 탐색 코드로 진행하여
- array_N[mid]가 array_M의 원소와 같다면 cnt + 1, break
- array_N[mid]가 array_M의 원소보다 크다면 end = mid - 1
- array_N[mid]가 array_M의 원소보다 작다면 start = mid + 1
- cnt를 출력하면 끝!
while True:
N,M = map(int, input().split())
array_N = []
array_M = []
for _ in range(N):
array_N.append(int(input()))
for _ in range(M):
array_M.append(int(input()))
if N == M == 0:
break
cnt = 0
for i in array_M:
start = 0
end = M - 1
while start <= end:
mid = (start + end) // 2
if array_N[mid] == i:
cnt += 1
break
elif array_N[mid] > i:
end = mid - 1
else:
start = mid + 1
print(cnt)