Jam's story
[프로그래머스 ] 체육복 본문
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
// 1. student 배열 생성
//매번 앞뒤로 검색해야하는데, 1일때와 마지막 숫자일때 if문으로 거르는 처리를 두려면
//코드가 지저분해지니, 0번 인덱스와 마지막인덱스+1는 0으로 초기화해서
//사용하지 않는 배열로 냅둔다.
//인덱스가 0= 자기꺼만있음 1=여분있음 -1는 빌려야함
int[] student = new int[n + 2];
int answer = 0;
// 2. reserve / lost 정보 반영
for (int l : lost)
student[l]--;
for (int r : reserve)
student[r]++;
// 3. 여분을 기준으로 앞뒤를 확인하여 체육복을 빌려준다.
for (int i = 1; i <= n; i++) {
if (student[i] == 1) {
//앞이 체육복이없다면
if (student[i - 1] == -1) {
student[i]--;
student[i - 1]++;
//뒤가 체육복이 없다면
} else if (student[i + 1] == -1) {
student[i]--;
student[i + 1]++;
}
}
}
// 4. 체육복을 갖고 있는 학생 수를 계산한다.
for (int i = 1; i <= n; i++)
if (student[i] > -1)
answer++;
return answer;
}
public static void main(String[] args) {
Solution sol = new Solution();
int[] lost = { 2, 4 };
int[] reserve = { 1, 3, 5 };
System.out.print(sol.solution(5, lost, reserve));
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[예산] (0) | 2022.06.28 |
---|---|
[프로그래머스] 폰캣몬 (0) | 2022.06.24 |
[프로그래머스] 모의고사 (0) | 2022.06.22 |
[JAVA] - K번째수 (0) | 2022.06.21 |
[프로그래머스] 완주하지 못한 선수 (0) | 2022.06.20 |