문제
"맞았습니다."코드
#include <bits/stdc++.h>
using namespace std;
int tc, n, m, num;
vector<int> a, b;
int solve(){
int answer = 0;
sort(a.begin(), a.end());
sort(b.begin(), b.end());
for(int i = a.size()-1; i >= 0; i--){
for(int j = b.size()-1; j >= 0; j--){
if(a[i] > b[j]) {
answer += j + 1;
break;
}
}
}
return answer;
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> tc;
while(tc--){
cin >> n >> m;
a.clear(); b.clear();
while(n--) { cin >> num; a.push_back(num); }
while(m--){ cin >> num; b.push_back(num); }
cout << solve() << '\n';
}
return 0;
}
리뷰
main 함수에서는 입력만 받았고. 핵심은 solve() 함수이다.
벡터 a와 b를 각각 정렬한다.
a의 가장 큰 수와 b의 가장 큰 수를 비교한다.
a[i] > b[j] 라면, b의 모든 수를 a[i]가 먹을 수 있다. 따라서 바로 answer를 증가시키고 break;한다.
그 다음 두 번째로 큰 숫자 a[i]와 b의 가장 큰 수를 비교한다.
a[i] > b[j] 를 만족하지 못하면, b의 인덱스 j를 감소시키면서 먹을 수 있을 때 까지 순회한다.
먹을 수 있는 크기가 나타나면 j+1만큼 크기를 answer에 더해준다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
접미사 배열 백준 11656 c++ (0) | 2021.12.20 |
---|---|
1로 만들기 백준 1463번 c++ (0) | 2021.12.20 |
빈도 정렬 백준 2910 c++ (0) | 2021.12.19 |
단어 정렬 백준 1181 c++ (0) | 2021.12.18 |
수 정렬하기 5 백준 15688 c++ (0) | 2021.12.18 |