import java.util.*;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
List<Integer> numList = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (flag[i]) {
for (int j = 0; j < arr[i]*2; j++) {
numList.add(arr[i]);
}
} else {
for (int j = 0; j < arr[i]; j++) {
numList.remove(numList.size()-1);
}
}
}
int[] answer = new int[numList.size()];
for (int i = 0; i < numList.size(); i++) {
answer[i] = numList.get(i);
}
return answer;
}
}
우선 배열의 길이를 정할수없으므로 List를 사용하여 문제를풀고 배열에 담아주는 방식을 사용했다.
그리고 flag와 arr의 길이가 같으므로 반복문의 길이는 flag.length로 해도되고 arr.length로 해도상관없어서 그냥 arr.lengthl로 했다.
반복문안에 조건문으로 flag[i]가 참일때 이중반복문이 실행되는데 반복횟수는 arr[i]의 값에 *2를 한값이고, 그 횟수만큼 List에 arr[i]를 add해준다.
또한 flag[i]가 거짓일때는 List의 길이에서 1을 뺀 인덱스값을 arr[i]의 값만큼 remove해준다.
그렇게나온 numList를 반복문을 통해 answer배열에 담아준다.