2019.03.10) 백준 이진탐색 마지막 - 1920 (PyPy3)

2019. 3. 10. 23:15프로그래밍(주력)/백준 문제풀이

소마 면접도 있고 하고싶은 일도 있어서 날먹했습니다..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
l_len = int(input())
= list(map(int, input().split(' ')))
l.sort()
 
 
# 이분 탐색
def search(h):
    # 맨 왼쪽은 0
    left = 0
    # 맨 오른쪽은 끝값
    right = l_len - 1
    # 중간
    mid = (left + right) // 2
    result = 0
    while True:
        # 만약 중간값이 구할 값이면
        if l[mid] == h:
            # 1 리턴
            result = 1
            break
        # 만약 중간값이 구해야하는 값보다 작으면
        elif l[mid] < h:
            # 중간 + 1을 왼쪽으로
            left = mid + 1
        # 만약 중간값이 구해야하는 값보다 크면
        elif l[mid] > h:
            # 중간 - 1을 오른쪽으로
            right = mid - 1
        # 중간값 갱신
        mid = (left + right) // 2
        # 반목문 탈출
        if left > right:
            break
 
    return result
 
 
input()
for i in map(int, input().split(' ')):
    print(search(i))
 
 
cs