https://youtu.be/94RC-DsGMLo?t=1355
정렬된 배열에서 특정 수의 개수 구하기 코드
from bisect import bisect_left, bisect_right
N, M = map(int, input().split())
data = list(map(int, input().split()))
left = bisect_left(data, M)
right = bisect_right(data, M)
if left - right == 0:
print(-1)
else:
print(right - left)
간단하게 bisect 라이브러리를 이용하면 해결 가능하다.
p.197 부품찾기 코드
N = int(input())
data1 = list(map(int, input().split()))
M = int(input())
data2 = list(map(int, input().split()))
data1.sort()
def bisect(data, a, b, target):
start = a
end = b
while start <= end:
mid = (start + end) // 2
if data[mid] == target:
return mid
elif data[mid] > target:
end = mid - 1
else:
start = mid + 1
return -1
for i in data2:
ans = bisect(data1, 0, N - 1, i)
if ans == -1:
print("no")
else:
print("yes")
bisect라는 이진탐색 함수를 정의하고 각 부품마다 이진탐색을 적용하여 부품이 존재하는지 확인한다.
'알고리즘 > python' 카테고리의 다른 글
| 1316번 그룹 단어 체커(python3) (0) | 2022.01.25 |
|---|---|
| 이.코.테 바닥공사, 효율적인 화폐 구성(python3) (0) | 2022.01.25 |
| 이.코.테 1로 만들기, 개미 전사(python3) (0) | 2022.01.24 |
| 18352번 특정 거리의 도시 찾기(python3) (0) | 2022.01.23 |
| 16234번 인구 이동(python3) (0) | 2022.01.23 |