int 배열의 삭제가 불가능해서 삭제해주고 싶은 값은 -10이라는 전혀 관계없는 수를 넣어주긴 했는데 좋은 과정은 아닌듯하다. 그냥 이 문제만을 풀기위한 방식이랄까...
또한 find 메서드를 좀 더 리팩토링하면 코드의 반복이 줄어들어 훨씬 좋은 풀이를 만들 수 있을 것 같다.
import java.util.*;
class Solution {
public static int solution(int n, int[] lost, int[] reserve) {
int answer = lost.length;
Arrays.sort(reserve);
Arrays.sort(lost);
for (int i = 0; i < reserve.length; i++) {
if (find(lost, reserve[i])) {
answer -= 1;
reserve[i] = -10;
}
}
for (int i = 0; i < reserve.length; i++) {
if (find(lost, reserve[i] - 1)) {
answer -= 1;
reserve[i] = -10;
} else if (find(lost, reserve[i] + 1)) {
answer -= 1;
reserve[i] = 10;
}
}
return n - answer;
}
public static boolean find(int[] arr, int i) {
for (int j = 0; j < arr.length; j++) {
if (arr[j] == i) {
arr[j] = -10;
return true;
}
}
return false;
}
}