class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n;
int[] arr = new int[n];
Arrays.fill(arr, 1);
for(int i : lost)
arr[i - 1] -= 1;
for(int i : reserve)
arr[i - 1] += 1;
for(int i = 0; i < arr.length ; i++){
if(arr[i] == 0){
if(i > 0 && arr[i - 1] == 2){ //i의 왼쪽과 비교, 배열 내에 있어야 함
arr[i - 1]-=1;
arr[i]++;
}
else if(i < n - 1 && arr[i + 1] == 2){ //i의 오른쪽과 비교, 배열 내에 있어야 함
arr[i + 1] -= 1;
arr[i]++;
}
else
answer --; //양쪽 모두 빌릴 사람이 없으면 수업 들을 수 있는 인원에서 빼기
}
}
return answer;
}
}
여기서도 입력이 n = 5, lost = [2, 4], reserve = [1, 3, 5] 일 때,
첫번째 for문에서는 arr[2-1], arr[4-1]에 대한 연산을 하는 것이다.
즉, lost 전체를 돌면서 lost[i]의 요소값 자체를 가져오는 것!
때문에 for문을 두 번 돌고 나면 [2, 0, 2, 0, 2]의 형태가 되는것이다
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv. 2] 카펫 (0) | 2023.08.08 |
---|---|
[Lv. 1] 달리기 경주 (0) | 2023.08.08 |
[Lv. 2] 영어 끝말잇기 (0) | 2023.07.30 |
[Lv. 1] 개인정보 수집 유효기간 (0) | 2023.07.30 |
[Lv. 1] 햄버거 만들기 (0) | 2023.07.29 |
댓글