어차피 A
의 숫자에 대응해서 내야 할 B
의 숫자는 같기 때문에, 정렬해서 푸는 문제
A
와 B
를 내림차순 정렬한다.A
의 인덱스 변수 idx
를 초기화 하고 B
를 기준으로 반복문을 돌린다.idx
가 A
범위를 넘어가면 breakB[i]
가 A[idx]
보다 크다면, 대응한 것이므로 answer++
해주고 그 idx
는 대응된 것이므로 다음으로 넘겨준다(idx++
)idx++
해준다.#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<int> A, vector<int> B) {
int answer = 0;
sort(A.begin(), A.end(), greater<int>());
sort(B.begin(), B.end(), greater<int>());
int idx = 0;
for(int i=0;i<B.size();i++)
{
while(1)
{
if(idx == A.size()) break;
if(B[i]>A[idx])
{
answer++;
idx++;
break;
}
idx++;
}
}
return answer;
}