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();
    }
}

+ Recent posts