BOJ - 4158

주의·2024년 1월 26일
0

boj

목록 보기
125/214

백준 문제 링크
CD

❓접근법

  1. while문으로 시작하여 N,M, array_N, array_M을 받아준다.
    만약 N,M이 모두 0 이면 break한다.
  2. 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
  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)

0개의 댓글