알고리즘 공부
[백준 10815번] 숫자 카드 python
gyk7
2024. 8. 1. 01:48
[처음 시도]
N = int(input())
li1 = sorted(list(map(int, input().split())))
M = int(input())
li2 = list(map(int, input().split()))
# print(li1)
for i in li2 :
if i in li1 :
print(1, end=' ')
else :
print(0, end=' ')
-> 시간 초과 발생
[맞은 코드]
N = int(input())
li1 = list(map(int, input().split()))
M = int(input())
li2 = list(map(int, input().split()))
li1.sort()
# print(li1)
for i in li2 :
lt, rt = 0, N-1
isExist = False
while lt <= rt :
mid = (lt + rt) //2
if i == li1[mid]:
isExist=True
print(1, end = ' ')
break
elif i > li1[mid] :
lt = mid + 1
else :
rt = mid - 1
if not isExist :
print(0, end = ' ')
혹시나 하고 이중탐색으로 코드 구현을 해보았더니 성공!
이중탐색을 해야만 하는 문제였다.