


설계
1. 상근이의 카드를 오름차순으로 정렬해주고
2. 찾아야 할 배열을 돌면서 이진탐색으로 찾아준다.

이진 탐색 과정
N = int(input())
sg = list(map(int, input().split()))
M = int(input())
mrr = list(map(int, input().split()))
sg.sort() # 상근이의 숫자카드 오름차순 정렬
for i in mrr:
s = 0 # start
e = N-1 # end
ans = 0 # 없다고 가정하고 시작
while s <= e: # 시작점이 끝점보다 커지면 반복문 종료
mid = (s+e)//2 # 중간값은 반복문이 돌 때마다 새롭게 설정해줘야함
if i > sg[mid]:
s = mid + 1
elif i < sg[mid]:
e = mid - 1
elif i == sg[mid]: # 같으면 ans를 1로 바꿔주고 반복문 종료
ans = 1
break
print(ans, end=" ")
그럼 이제 숫자 카드 2 풀러 가봐야지...
'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 10250번 ACM 호텔 python / 파이썬 (0) | 2022.04.01 |
|---|---|
| [BOJ / 백준] 2805번 나무 자르기 python / 파이썬 이진탐색 (0) | 2022.03.26 |
| [BOJ / 백준] 2559번 수열 4 python / 파이썬 누적 합 (0) | 2022.03.24 |
| [BOJ / 백준] 11659번 구간 합 구 하기 4 python / 파이썬 누적합 / 시간초과 탈출 (0) | 2022.03.23 |
| [BOJ / 백준] 2164번 카드2 python / 파이썬 (0) | 2022.03.21 |
댓글