링크 :
https://school.programmers.co.kr/learn/courses/30/lessons/42862
풀이 :
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
Set<Integer> lostSet = new HashSet<>();
Set<Integer> reserveSet = new HashSet<>();
// 1. set 채우기
for (int r : reserve) {
reserveSet.add(r);
}
for (int l : lost){
if(reserveSet.contains(l)) reserveSet.remove(l); // 여분있는애가 잃어버린거면 빌려줄 리스트에서 삭제
else lostSet.add(l); // 아니면 그냥 잃어버린애 리스트에 추가
}
// 2. 빌려줄 수 있는애랑 잃어버린 애 비교
for(int r : reserveSet){ // 빌려줄 수 있는 애 중에서
if(lostSet.contains(r-1)){
lostSet.remove(r-1); // 빌린애는 제외
}
else if(lostSet.contains(r+1)){
lostSet.remove(r+1);
}
}
answer = n - lostSet.size();
return answer;
}
}