알고리즘

이진검색 bisect.bisect_left 함수

jwjwvison 2022. 5. 16. 20:12

bisect.bisect_left(a, x, lo=0, hi=len(a), *, key=None)

 정렬된 순서를 유지하도록 a에 x를 삽입할 위치를 찾는다.

 

nums1 = [4,9,5]
nums2 = [9,4,9,8,4]
nums2.sort()

result=set()

for n1 in nums1:
    index=bisect.bisect_left(nums2,n1)
    print(index)
    if len(nums2)>0 and len(nums2)>index and n1==nums2[index]:
        result.add(n1)
        
print(result)

 위 코드는 num1과 nums2의 교집합을 찾는 코드이다.

 

 index=bisect.bisect_left(nums2,n1)에서 n1이 정렬된 num2에 들어갈 위치를 반환한다.

 위 코드에서 index는 0,3,2가 나온다. (nums2.sort() -> [4,4,8,9,9]이고 n1은 순서대로 4,9,5 이므로 0번째, 3번째 그리고 5는 4와 8 사이인 2번째에 들어가야 한다.)

'알고리즘' 카테고리의 다른 글

슬라이딩 윈도우  (0) 2022.05.17
이진 검색 예제, bisect_left 활용, 슬라이싱  (0) 2022.05.16
이진 검색  (0) 2022.05.16
힙을 사용한 예제(배열의 k번째 큰 요소)  (0) 2022.05.11
  (0) 2022.05.10