import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
// 1. lost와 reserve set에 넣어주기
Set<Integer> lo = new HashSet<>();
Set<Integer> re = new HashSet<>();
for (int r : reserve) re.add(r);
for (int l : lost) {
if (re.contains(l)) {
re.remove(l);
} else {
lo.add(l);
}
}
// 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다.
// 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.
for (int l : lo) {
if (re.contains(l)) {
re.remove(l);
lo.remove(l);
}
}
// 2. lost에서 빌릴 수 있는 친구 제거하기
for (int r : re) {
if (lo.contains(r - 1)) {
lo.remove(r - 1);
} else if (lo.contains(r + 1)) {
lo.remove(r + 1);
}
}
// 3. 못 빌린 친구 제외하고 리턴
return n - lo.size();
}
}