핵심 아이디어
- 배열 A와 B는 오름차순으로 정렬된다. 이를 통해 작은 값부터 차례대로 비교할 수 있다.
- A의 각 원소 a를 순회하면서, B에서 a보다 큰 값을 찾기 위해 포인터 i를 사용한다.
- while 루프는 B[i]가 a보다 작거나 같으면 i를 증가시켜 a보다 큰 값을 찾는다.
- a보다 큰 값 B[i]를 찾으면, 그 값을 매칭한 것으로 간주하고 answer를 1 증가시키고, i를 다시 증가시켜 다음 비교에 사용한다.
- 두 배열을 모두 순회한 후, 조건을 만족하는 쌍의 개수인 answer를 반환한다.
정답
function solution(A, B) {
let answer = 0;
let i = 0;
A.sort((a, b) => a - b);
B.sort((a, b) => a - b);
for (const a of A) {
while (i < B.length && a >= B[i]) {
i++;
}
if (i < B.length) {
answer++;
i++;
}
}
return answer;
}