BOJ - 10815

주의·2024년 1월 26일
0

boj

목록 보기
127/214

백준 문제 링크
숫자 카드

❓접근법

  1. 숫자카드를 각각 array_N, array_M에 받고, array_N만 정렬한다.
  2. 초기값 answer = [0] * M으로 지정한다.
  3. 기본 이분 탐색 코드에서
  • array_M의 원소(array_M[i])가 array_N[mid]와 같다면
    answer[i] = 1로 바꿔준다.
  • array_M의 원소(array_M[i])가 array_N[mid]보다 크다면
    start = mid + 1
  • array_M의 원소(array_M[i])가 array_N[mid]보다 작다면
    end = mid - 1
  1. 문제에서 요구하는 형식으로 answer를 출력하면 끝!

👌🏻코드

N = int(input())
array_N = list(map(int, input().split()))

M = int(input())
array_M = list(map(int, input().split()))

array_N.sort()

answer = [0] * M

for i in range(len(array_M)):
    start = 0
    end = N-1
    
    while start <= end:
        mid = (start + end) // 2
        
        if array_M[i] == array_N[mid]:
            answer[i] = 1
            break
        
        elif array_M[i] > array_N[mid]:
            start = mid + 1
            
        else:
            end = mid - 1
                 
print(*answer)

0개의 댓글