처음엔 순열 완탐 생각했다.
시간초과 엔딩
import java.util.*;
import java.io.*;
class Solution {
static boolean[] v;
static int[] A,B,C;
static int answer,n;
public int solution(int[] A, int[] B) {
answer = 0;
n=A.length;
v=new boolean[n];
this.A=A;
this.B=B;
C=new int[n];
perm(0);
return answer;
}
static void perm(int idx){
if(idx==n){
int score=0;
for(int i=0;i<n;i++){
if(A[i]<C[i]) score++;
}
answer=Math.max(answer,score);
}
for(int i=0;i<n;i++){
if(!v[i]){
v[i]=true;
C[idx]=B[i];
perm(idx+1);
v[i]=false;
}
}
}
}
그냥 배열 정렬하고
현재 B값이 A보다 같거나 작을 경우 B의 다음 index 체크
현재 B값이 A보다 큰 경우를 A의 index를 증가
해주면 됐다.
import java.util.*;
import java.io.*;
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
for(int i=0;i<A.length;i++){
if(A[answer]>=B[i]) continue;
answer++;
}
return answer;
}
}