이진 탐색 알고리즘
Q
A
이진 탐색 알고리즘을 쓰는데, bisect 라이브러리를 활용하면 더 쉽게 풀 수 있다.
bisect 사용 코드
from bisect import bisect_left, bisect_right
import sys
testcase = int(sys.stdin.readline().rstrip().split())
for _ in range(testcase):
a, b = map(int, sys.stdin.readline().rstrip().split())
array_a = list(map(int, sys.stdin.readline().rstrip().split()))
array_b = list(map(int, sys.stdin.readline().rstrip().split()))
array_a.sort()
array_b.sort()
result = 0
for i in array_a:
result += bisect_left(array_b, i) #array_b에서 i가 있는 인덱스 출력
print(result)
반복문 코드
import sys
testcase = int(sys.stdin.readline().rstrip().split())
for _ in range(testcase):
a, b = map(int, sys.stdin.readline().rstrip().split())
array_a = list(map(int, sys.stdin.readline().rstrip().split()))
array_b = list(map(int, sys.stdin.readline().rstrip().split()))
array_a.sort()
array_b.sort()
result = 0
j = 0
for k in range(a):
while j < b and array_a[k] > array_b[j]:
j += 1
result += j
print(result)