for _ in range(int(input())):
n,m = map(int,input().split())
a = list(map(int,input().split()))
b = list(map(int,input().split()))
a.sort()
b.sort()
res = 0
cnt = 0 #반복문을 돌아가며 해당 누적 쌍을 기록할 변수
for start in range(n):
while True:
if cnt == m or b[cnt] >= a[start]:
res += cnt
break
else:
cnt += 1
print(res)
- 완전 탐색을 사용해(2중 for문 사용시) 풀면 시간초과가 뜬다.
- 이 문제는 합을 누적해가는 식으로 진행해야하고 이를 위해 비교하려는 리스트와 비교되는 리스트를 정렬시켜주어야 한다.
- 이때 a가 b보다 큰 경우에 앞에 봤던 값은 더이상 살펴보지 않아도 큰 경우라고 판단한다.(정렬을 해주었기 때문)
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준] - 2839. 설탕 배달(python) (0) | 2023.06.06 |
---|---|
[백준][문자열] - 10798. 세로읽기 (0) | 2022.10.12 |
[백준][수학] - 3029. 경고 (0) | 2022.09.27 |
[백준][슬라이딩 윈도우] - 21921. 블로그 (0) | 2022.09.19 |
[백준][투포인터] - 11728. 배열 합치기 (0) | 2022.09.07 |