백준

백준 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