Coding Test

[프로그래머스] 체육복

SouthernDuck 2023. 7. 2. 15:36
728x90
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();
    }
}
728x90
반응형