문제
https://www.acmicpc.net/problem/10815
코드
import sys
def com(a, b):
for i in range(len(b)):
key = b[i]
pl = 0
pr = len(a) - 1
while True:
pc = (pl + pr) // 2
if a[pc] == key:
print(1, end=' ')
break
elif a[pc] < key:
pl = pc + 1
else:
pr = pc - 1
if pl > pr:
print(0, end=' ')
break
N = int(input())
num = list(map(int, sys.stdin.readline().rstrip().split()))
M = int(input())
ex = list(map(int, sys.stdin.readline().rstrip().split()))
num.sort()
com(num, ex)
먼저 가지고 있는 카드 배열인 num을 파이썬의 sort로 정렬시켜줬습니다.
그 다음 com함수를 이용해서 이진탐색을 실행해 수를 찾으면 1을 못찾으면 0을 출력하게했습니다.
pl은 배열의 시작 값이고 pr은 배열의 끝값으로 num 배열에서 값을 찾는 것이기 때문에 len(a) - 1로 설정했습니다.
'IT > 알고리즘' 카테고리의 다른 글
백준 - 1764번 (0) | 2020.11.25 |
---|---|
백준 - 10610번 (0) | 2020.11.25 |
알고리즘 - 셸 정렬 (0) | 2020.11.24 |
알고리즘 - 이진 삽입 정렬 (0) | 2020.11.23 |
알고리즘 - 단순 삽입 정렬 (0) | 2020.11.23 |
댓글