https://school.programmers.co.kr/learn/courses/30/lessons/42862
탐욕법에 대한 지식은 없으나 최대의 이익?을 얻어야 하는것 같다. 배열을 사용하여 체육복이 있는 학생은 0, 없는 학생은 -1, 여분이 있는 학생은 1 값을 준다. 여분을 잃어버린 학생도 고려해야한다.
2개에서 1개가 된 것이니 초기값 0 += 1(여분) -> -= 1(잃어버림) => 0(본인몫의 체육복 소지)
1:1대응을 위해 n+2로 배열크기를 선언한다.
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n;
int[] student = new int[n+2];
for(int a : student) {a = 0;}
for(int i = 1; i <= lost.length; i++) {student[lost[i-1]] -= 1;}
for(int i = 1; i <= reserve.length; i++) {student[reserve[i-1]] += 1;}
for(int i = 1; i < student.length; i++) {
if(student[i] == 1){
if(student[i-1] == -1){
student[i-1] = 0;
student[i] = 0;
}else if(student[i+1] == -1){
student[i+1] = 0;
student[i] = 0;
}
}
}
for(int cnt : student){
answer -= cnt == -1 ? 1 : 0;
}
return answer;
}
}