Arrays.fill(배열 이름, 초기화 할 값)
배열을 특정값으로 한번에 초기화
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int[] student = new int[n];
Arrays.fill(student, 1); // 가지고 있는 체육복 개수(배열 특정값으로 한번에 초기화)
int answer = n;
//체육복 도난 당한 학생
for (int i : lost)
student[i - 1] -= 1;
//여벌 체육복 가진 학생
for (int i : reserve)
student[i - 1] += 1;
//도난 당한 학생에게 여벌 체육복 빌려주는 경우
for (int i = 0; i < student.length; i++) {
if (student[i] == 0) {
if (i > 0 && student[i - 1] == 2)
student[i - 1] -= 1;
else if (i < n - 1 && student[i + 1] == 2)
student[i + 1] -= 1;
else
answer--; //answer은 전체 학생수로 초기화 되었기 때문에 체육활동 불가능한 학생수를 빼면
} //체육활동이 가능한 학생수를 알 수 있다.
}
return answer;
}
}
student 배열을 1을 채워서 모두가 체육복을 하나씩 가지고 있는 상태에서 lost한 학생의 체육복 수를 -1하고 reserve한 학생의 체육복 수를 +1 한후, 체육복이 0개인 학생들 앞뒤에 체육복을 빌려줄 수 있는 학생이 있는지 확인 한뒤 있으면 빌려준 학생의 체육복 수를 -1하고 없으면 체육에 참여할 수 있는 학생수를 줄인다.
'코딩테스트' 카테고리의 다른 글
[완전탐색] 백준 2503번 숫자야구 (0) | 2022.10.06 |
---|---|
[완전탐색] 백준 2231번 분해합 (0) | 2022.10.06 |
[그리디] 백준 11000번 강의실 배정 (0) | 2022.09.26 |
[그리디] 백준 13305번 주유소 (0) | 2022.09.25 |
[그리디] 백준 11047번 동전0 (1) | 2022.09.25 |
댓글