뭐였더라..
import java.util.*;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
int[] arr = init(n, lost, reserve);
answer = search(n,arr);
return answer;
}
// 순차적으로 0 인 cell 에 대해, 거기서부터 시작해서, 연속해서 1이상인 앞? 뒤 ? 쪽의 원소들 중 2인 애도 존재하는지???
private int search(int n, int[] arr) {
int cur = 0; int cnt = 0;
for(int i = 0; i < n; i++) {
if(arr[i] == 1) {
cnt += 1;
} else if (arr[i] == 2) {
if(cur < 0) {
cur += 1;
cnt += 2;
} else {
cur += 1;
cnt += 1;
}
} else {
if( cur > 0) {
cur -= 1;
cnt += 1;
} else {
cur -= 1;
}
}
}
return cnt;
}
private int[] init(int n, int[] lost, int[] reserve) {
int[] arr = new int[n];
// init as 1
Arrays.fill(arr, 1);
// update as 2
for(int r : reserve) {
arr[r-1] += 1;
}
// reduce 1
for(int l : lost) {
arr[l-1] -= 1;
}
return arr;
}
}