정구리의 우주정복

[BOJ] 1920번 - 수 찾기 파이썬 이진 탐색,set 본문

ALGORITHM/SOLVE

[BOJ] 1920번 - 수 찾기 파이썬 이진 탐색,set

Jungry_ 2020. 9. 6. 23:05
반응형

https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안��

www.acmicpc.net


1. 이진 탐색으로 해결한 방법

def binary_search(array,target,start,end):
    while start <= end:
        mid = (start+end)//2
        if array[mid] == target:
            return mid
        elif array[mid] > target :
            end = mid -1
        else:
            start = mid +1
    return None

n = int(input())
array = list(map(int,input().split()))
array.sort()
m = int(input())
array_target = list(map(int,input().split()))

for x in array_target:
    result = binary_search(array,x,0,n-1)
    if result == None:
        print('0')
    else:
        print('1')

 

 

2. set 을 사용해서 해결한 방법

n = int(input())
array = set(map(int,input().split()))
m = int(input())
array_target = list(map(int,input().split()))

for i in array_target:
    if i in array:
        print('1')
    else:
        print('0')

 

set 은 안에 있는지 확인할 때 유용하게 쓰인다 !

반응형
Comments