import sys
input=sys.stdin.readline
t=int(input())
for _ in range(t):
cnt=0
n,m=map(int,input().split())
a_arr=list(map(int,input().split()))
b_arr=list(map(int,input().split()))
for i in b_arr:
for j in range(len(a_arr)):
if i<a_arr[j]:
cnt+=1
print(cnt)
배열로 각 값을 비교하려고 했으나 시간초과가 났다.
잘못된 알고리즘이라 코드를 다시 짜주었다.
import sys
input=sys.stdin.readline
t=int(input())
def find(a,s,e):
c=-1#cnt에서 +1을해주었기 때문에 -1로 초기화
while s<=e:
mid=(s+e)//2#중간 값(이분탐색)
if a>b_arr[mid]:#a가 b보다 큰 값이라면
c=mid#인덱스로 초기화
s=mid+1
else:#b가 더 크다면
e=mid-1
return c
for _ in range(t):
n,m=map(int,input().split())
a_arr=list(map(int,input().split()))
b_arr=list(map(int,input().split()))
#내림차순 정렬
a_arr.sort()
b_arr.sort()
cnt=0
for i in a_arr:#a에 대해
cnt+=find(i,0,len(b_arr)-1)+1#가장 큰 수의 인덱스가 0일 경우에 +1
print(cnt)
접근 방법