이코테_부품 찾기

최효준·2022년 12월 7일
0

알고리즘 문제풀이

목록 보기
8/61

문제

문제
전자 매장에는 부품이 N개 있다.
어느날 손님이 M개 종류의 부품을 구매하려고 한다.
이 때 매장에서 손님이 사려고 하는 부품이 있는지 yes와 no 형태로 구하라.
예시
입력 :
array = [9, 3, 7, 9, 2]
target = [5, 7, 9]
결과 : no yes yes

풀이
이 문제는 여러 풀이를 사용할 수 있는데 그 중 이분탐색을 이용하여 문제를 풀어보았다. 이분탐색을 진행하기 위해서는 먼저 리스트가 정렬되어 있어야 함으로 리스트를 정렬해준다. 이후 이분탐색 함수를 정의해주고 원하는 값을 찾으면 그 값을 리턴하고 아니면 None을 리턴한다.
이후 for문으로 찾는 부품의 리스트를 돌리면서 정의한 이분탐색 함수에 값을 넣어 None이면 no 아니면 yes를 출력한다.

풀이 코드

n = int(input())
A = list(map(int,input().split()))
A.sort()

m = int(input())
B = list(map(int,input().split()))

def binary(arr,target,start,end):
    while start <= end:
        mid = (start+end) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            start = mid + 1
        else:
            end = mid -1
    return None
            
            
for i in B:
    result = binary(A, i, 0, n-1)
    if result != None:
        print('yes', end=' ')
    else:
        print('no',end = ' ')

profile
Not to be Number One, but to be Only One

0개의 댓글