-코드
from sys import stdin
def binary(arr, target, left, right):
mid_index = (left + right) // 2
mid = arr[mid_index]
if left > right:
return 0
if target == mid:
return 1
elif mid > target:
return binary(arr, target, left, mid_index - 1)
elif mid < target:
return binary(arr, target, mid_index + 1, right)
n = int(input())
a = list(map(int, stdin.readline().split()))
m = int(input())
b = list(map(int, stdin.readline().split()))
a.sort()
for i in b:
print(binary(a, i, 0, n - 1))
코딩을 배우다가 말아서 처음에 for문으로만 해결하려고 하다가 실패를 한 후 친구에게 물어보니 이분 탐색을 찾아보라 해서 소스코드를 2시간 보고 어느 정도 어떻게 돌아가는지 확인하고 작성을 했으나 참고했던 소스코드는 하나의 수만 배열에서 찾는 것이어서 배열 안에 있는 수를 다른 배열 수와 비교하는 것에 넣으니 오류가 났습니다. 그래서 좀 더 찾아보니 이분 탐색을 할 때, 시작 점과 끝점의 크기가 반대가 되었을 때 오류가 나는 것을 알았고 if문을 하나 더 넣어주어 해결을 하였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]18063번 Jazz Enthusiast (0) | 2021.04.22 |
---|---|
[백준/파이썬]6779번 Who Has Seen The Wind (0) | 2021.04.22 |
[백준/파이썬]1978번 소수 찾기 (0) | 2021.04.21 |
[백준/파이썬]21567번 숫자의 개수 2 (0) | 2021.04.21 |
[백준/파이썬]9724번 Perfect Cube (0) | 2021.04.21 |