- 내 방법 풀이
- 체육복을 전부 가졌다고 가정한 N길이의 배열 선언 후, lost 배열과 reserve배열을 순회하며 해당하는 번호의 학생들의 배열값을 조정해주었다.
- 이후 앞에서부터 순회하며 체육복의 여유가 있는 사람이 앞 번호의 친구로부터 체육복을 빌리는 것을 가정하여 알고리즘을 구성했지만, 배열에서 뒷번호의 친구에게밖에 못 빌리는 다음 예시와 ( { 0, 1, 1, 0} ) 같은 배열의 상황을 고려하지 못 해, 테스트의 여러개에서 실패가 낫다.
- 이후 조건을 수정하여, 앞 뒤 사람에게 빌리도록 코드에 반영하여 번호의 숫자가 -1, 즉 체육복이 없는 사람을 n에서 빼주는 계산으로 통과했다.
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int[] students = new int[n];
for (int i : lost) {
students[i-1]--;
}
for (int i : reserve) {
students[i-1]++;
}
for (int i = 0; i < students.length; i++) {
if (students[i] == -1) {
if (i > 0 && students[i-1] == 1) {
students[i]++;
students[i-1]--;
} else if (i < students.length - 1 && students[i+1] == 1) {
students[i]++;
students[i+1]--;
}
}
}
for (int i : students) {
if (i==-1) n--;
}
return n;
}
}