import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
List<Integer> lostList = new ArrayList<>();
List<Integer> reserveList = new ArrayList<>();
for (int i : lost) {
lostList.add(i);
}
for (int i : reserve) {
reserveList.add(i);
}
// 정렬
Collections.sort(lostList);
Collections.sort(reserveList);
// 여벌 체육복을 가져온 학생이 체육복을 도난당한 경우 우선 처리
for (int i = 0; i < reserveList.size(); i++) {
int student = reserveList.get(i);
if (lostList.remove((Integer) student)) { // 도난당한 학생 목록에서 제거
reserveList.set(i, -1); // -1로 표시
}
}
for (int i = 0; i < reserveList.size(); i++) {
int student = reserveList.get(i);
if (student == -1) { // 이미 체육복을 빌려준 경우
continue;
}
if (lostList.remove((Integer) (student - 1))) { // 앞번호 학생에게 빌려주기
continue;
}
if (lostList.remove((Integer) (student + 1))) { // 뒷번호 학생에게 빌려주기
continue;
}
}
return n - lostList.size();
}
}