백준 2776번 바로가기

풀이 1

for _ in range(int(input())):
  _ = int(input())
  note1 = set(map(int, input().split()))
  _ = int(input())
  for i in map(int, input().split()):
    if i in note1:
      print(1)
    else:
      print(0)

풀이 2

def binary_search(data, target):
  data.sort()
  start = 0
  end = len(data) - 1

  while start <= end:
    mid = (start+end)//2
    if data[mid] == target:
      return 1
    elif data[mid] < target:
      start = mid + 1
    else:
      end = mid - 1
  return 0

for _ in range(int(input())):
  _ = int(input())
  note1 = list(map(int, input().split()))
  _ = int(input())
  note2 = list(map(int, input().split()))
  for i in note2:
    print(binary_search(note1, i))

CODE REVIEW

  1. 처음에는 단순히 input을 받고 in으로 확인해서 쉽게 풀어냈다. 그런데 이분 탐색에 속한 문제이니만큼 이분 탐색을 활용해서 풀어보기로 했다.
  2. 아직 이분 탐색을 구현하는게 익숙하진 않은데, 자주 보면서 익숙하도록 숙련해야겠다.