처음 작성한 코드는 다음과 같다.
하지만 시간초과 오류가 났다.
#include <iostream>
using namespace std;
int main(){
int t;
cin >> t;
for(int i=0; i<t; i++){
int n, m;
cin >> n >> m;
int arr1[n];
int arr2[m];
for(int j=0; j<n; j++)
cin >> arr1[j];
for(int k=0; k<m; k++)
cin >> arr2[k];
int count = 0;
for(int j=0; j<n; j++){
for(int k=0; k<m; k++){
if(arr1[j] > arr2[k])
count++;
}
}
cout << count << "\n";
}
return 0;
}
다시 작성한 코드는 다음과 같다.
시간 문제를 해결하기 위해 sort함수로 미리 정렬을 해놓은 후, 탐색할 때 이중 for문을 다 돌게 하는 것이 아니라 적당히 돌다가 break를 통해 끊어가도록 한다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int t;
cin >> t;
for(int i=0; i<t; i++){
int n, m;
cin >> n >> m;
int arr1[n];
int arr2[m];
for(int j=0; j<n; j++)
cin >> arr1[j];
for(int k=0; k<m; k++)
cin >> arr2[k];
sort(arr1, arr1+n);
sort(arr2, arr2+m);
int count = 0;
for(int j=0; j<n; j++){
for(int k=0; k<m; k++){
if(arr1[j] > arr2[k])
count++;
else
break;
}
}
cout << count << "\n";
}
return 0;
}
'백준' 카테고리의 다른 글
백준 11652 카드 c++ (0) | 2024.03.27 |
---|---|
백준 3273 두 수의 합 c++ (0) | 2024.03.27 |
백준 14501 퇴사 c++ (0) | 2024.03.21 |
백준 2468 안전 영역 c++ (0) | 2024.03.20 |
백준 10816 숫자 카드 2 c++ (0) | 2024.03.14 |