이번 문제는 이분 탐색을 통해 해결하였다. 우선 A와 B를 입력받음과 동시에 오름차순으로 정렬시켜놓고, A를 순회하며 B에 대한 A[i]의 이분 탐색을 통해 A[i]보다 작은 수의 갯수를 도출해낸다. 이때, 무의미한 탐색을 줄이기 위해 A[i]가 B의 첫번째 원소보다 작거나 같을 경우에는 탐색하지 않고 넘어가도록 하였다.
(left+right)//2
로 갱신한다.B[mid]
가 target보다 작을 경우,result+1
을 반환한다. B[0]
보다 작거나 같을 경우, 다음 반복으로 넘어간다.binary_search(left, right, i)
의 반환값을 더한다.def binary_search(left, right, target):
result=0
while left<=right:
mid=(left+right)//2
if B[mid]<target:
left=mid+1
result=mid
else:
right=mid-1
return result+1
t=int(input())
for _ in range(t):
a, b=map(int, input().split())
A=sorted(list(map(int, input().split())))
B=sorted(list(map(int, input().split())))
answer=0
for i in A:
if i<=B[0]:
continue
left, right=0, b-1
answer+=binary_search(left, right, i)
print(answer)