백준
백준 1920번 어떻게 풀었나
kimbro6
2022. 12. 28. 22:34
- 좋았던점
- 입력받기 고드 빠르게 잘 씀
- Binary Search를 구현할때, 디버깅 좋았음
- 고치면 좋을 부분
- 알고리즘을 생각하는 과정에서 'Binary Search'을 몰랐음
- 무작정 Liner Search로 단순화 하려고 했는데 풀리지 않았음
- 고민해도 안풀리는 문제였음
- 디버깅 하는 방법을 좀더 익히면 좋겠음
- 아날로그 방식으로 알고리즘을 생각하면 더 잘 떠오를거 같음
코드
# N입력받기
N = int(input())
# 리스트 입력받기
A = list(map(int, input().split()))
# M 입력받기
M = int(input())
# 리스트 입력받기
cheaklist = list(map(int, input().split()))
A.sort()
ret = [0]*M
#이진검색
for k in range(M):
left = 0
right = N-1
while True:
middle = (left + right) // 2
if cheaklist[k] == A[middle]:
print(1)
break
elif left == right:
print(0)
break
elif cheaklist[k] < A[middle]:
right = middle
elif cheaklist[k] > A[middle]:
if right-left == 1:
left = middle + 1
else :
left = middle