기본적인 두 부분으로 구성된 검색 문제였습니다.
이진 검색은 목록을 정렬할 때 사용할 수 있는 검색 유형입니다.
import sys
sys.stdin = open("10815.txt", 'r')
N = int(sys.stdin.readline())
n = (*map(int, sys.stdin.readline().split()))
M = int(sys.stdin.readline())
m = (*map(int, sys.stdin.readline().split()))
n.sort()
for i in m:
start = 0
end = N - 1
mid = (start + end) // 2
while start <= end:
if i == n(mid):
print(1)
break
if i < n(mid):
end = mid - 1
if i > n(mid):
start = mid + 1
mid = (start + end) // 2
else:
print(0)
※ 제출 후 추후 검토가 용이하도록 한글로 수정하였습니다.
import sys
sys.stdin = open("10815.txt", 'r')
카드의수 = int(sys.stdin.readline())
카드들 = (*map(int, sys.stdin.readline().split()))
새로받을카드의수 = int(sys.stdin.readline())
새로받은카드들 = (*map(int, sys.stdin.readline().split()))
카드들.sort()
for 어떤카드 in 새로받은카드들:
시작 = 0
끝 = 카드의수 - 1
중간점 = (시작 + 끝) // 2
while 시작 <= 끝:
if 어떤카드 == 카드들(중간점):
print(1)
break
if 어떤카드 < 카드들(중간점):
끝점 = 중간점 - 1
if 어떤카드 > 카드들(중간점):
시작점 = 중간점 + 1
중간점 = (시작점 + 끝점) // 2
else:
print(0)
다른 사람의 코드를 봤는데 훨씬 짧은 코드가 있어서 가져왔습니다.
해시 사용 방법 누군가 실제로 구현했습니다.
# 이렇게 해도 정답이 나온다.
n = int(input())
n1 = set(map(int,input().split()))
m = int(input())
m1 = list(map(int,input().split()))
k = ()
for i in m1:
if i in n1:
k.append(1)
else:
k.append(0)
print(*k)