코딩테스트/BOJ

[백준][이분탐색] 1920. 수 찾기

박소민 2025. 8. 6. 21:31
1920. 수 찾기

 

  • 내 풀이
    • 기준값들 정렬
    • bisect 으로 이분탐색
      • 해당 위치값이 마지막 인덱스보다 크면 0
      • 해당 위치값이 해당값과 다르면 0
      • 아니면 존재하므로 1
from bisect import bisect_left

n = int(input())
nums = list(map(int, input().split()))

m = int(input())
existed = list(map(int, input().split()))

nums.sort()
for ex in existed:
    idx = bisect_left(nums, ex)
    if idx >= n:
        print(0)
    elif nums[idx] != ex:
        print(0)
    else:
        print(1)

 

 

  • 이분탐색 직접구현
def binary_search(arr, target):
    left = 0
    right = len(arr) - 1
    
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return True
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return False

n = int(input())
nums = list(map(int, input().split()))

m = int(input())
existed = list(map(int, input().split()))

nums.sort()

for ex in existed:
    if binary_search(nums, ex):
        print(1)
    else:
        print(0)