체육복
n | lost | reserve | return |
---|---|---|---|
5 | [2, 4] | [1, 3, 5] | 5 |
5 | [2, 4] | [3] | 4 |
3 | [3] | [1] | 2 |
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
// 전체 학생 배열 : 초기값 0
int[] students = new int[n];
// 체육복 도난 당한 학생은 -1함
for (int l : lost){
students[l-1]--; // 배열의 인덱스 0부터 시작하니깐 인덱스에 -1 해줌
}
// 여벌의 체육복 가져온 학생들 +1 함
for (int r : reserve) {
students[r-1]++;
}
// 전체 학생 배열 쭉 돌면서 도난 당한 학생 찾음(-1)
for (int i = 0; i < n; i++) {
if (students[i] == -1) {
// 앞의 학생에게 빌리기
// 인덱스 범위를 넘으면 안되니 인덱스 범위 먼저 체크
if ( i-1 >= 0 && students[i-1] == 1){
students[i]++;
students[i-1]--;
// 뒤의 학생에게 빌리기
} else if (i+1 < n && students[i+1] == 1) {
students[i]++;
students[i+1]--;
}
}
}
// 체육 수업 들을 수 있는 학생 수 체크
int count = 0;
for (int student : students) {
if (student >= 0) {
count++;
}
}
return count;
}
}
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL