수 찾기
다른 사람 풀이
이분 탐색 기본
N = int(input())
A = list(map(int, input().split()))
m = int(input())
num= list(map(int, input().split()))
A.sort() # A 정렬
# arr의 각 원소별로 이분탐색
for n in num:
lt, rt = 0, N - 1 # lt는 맨 앞, rt는 맨 뒤
isExist = False # 찾음 여부
# 이분탐색 시작
while lt <= rt: # lt가 rt보다 커지면 반복문 탈출
mid = (lt + rt) // 2 # mid는 lt와 rt의 중간값
if n == A[mid]: # num(목표값)이 A[mid]값과 같다면 (목표값 존재여부를 알았다면)
isExist = True # isExist Ture 변경
print(1) # 1 출력
break # 반복문 탈출
elif n > A[mid]: # A[mid]가 num보다 작으면
lt = mid + 1 # lt를 높임
else: # A[mid]가 num보다 크다면
rt = mid - 1 # rt를 낮춤
if not isExist: # 찾지 못한 경우
print(0) # 0 출력'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준] [구현] 3190.뱀 -미완 (0) | 2023.02.05 |
|---|---|
| [백준][DP] 1463. 1로 만들기 (0) | 2023.02.04 |
| [백준] [실버 3] [DP] 9641) 파도반 수열 (0) | 2022.08.25 |
| [백준] [실버 3] [DP] 1904번. 01타일 (0) | 2022.08.25 |
| [백준] [실버 3] [큐/덱] 1966. 프린터 큐 (0) | 2022.08.25 |