https://school.programmers.co.kr/learn/courses/30/lessons/42862
public int solution(int n, int[] lost, int[] reserve) {
int answer=0;
int big=0;
int small=0;
Arrays.sort(lost);
Arrays.sort(reserve);
for(int i=0;i<lost.length;i++) {
for(int j=0;j<reserve.length;j++) {
if(lost[i]==reserve[j]) {
answer++;
lost[i]=-1;
reserve[j]=-1;
}
}
}
for(int i=0;i<lost.length;i++) {
for(int j=0;j<reserve.length;j++) {
if(lost[i]==-1){
break;
}
big=lost[i]+1;
small=lost[i]-1;
if(big==reserve[j]||small==reserve[j]) {
answer++;
reserve[j]=-1;
break;
}
}
}
return n-(lost.length-answer);
}
코드가 너무 장황한 것 같다. Array.sort 함수의 시간복잡도가 o(logn) 인데, 시간복잡도를 최대한 줄이는 방향으로 리팩토링이 필요할 것 같다