아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.
원소를 자유롭게 추가하고 제거하기엔 List 객체 만큼 효율적인 게 없다는 생각이 든다. 정수 배열 arr과 boolean 배열 flag의 길이가 같은 점을 이용해 하나의 for문에서 경우의 수를 나누어 값을 넣고 빼주었다.
그리고 정수 제거 시에는 마지막 arr[i]개라는 점을 이용, 루프를 돌며 arrList.size() - 1을 인덱스로 갖는, 즉 마지막 인덱스의 요소를 제거하도록 코드를 짰다.
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
List<Integer> arrList = new ArrayList<>();
for(int i=0;i<flag.length;i++){
if(flag[i] == true){
int rep = arr[i] * 2;
for(int j=0;j<rep;j++){
arrList.add(arr[i]);
}
}else{
int rem = arr[i];
for(int j=0;j<rem;j++){
arrList.remove(arrList.size()-1);
}
}
}
int[] answer = new int[arrList.size()];
for(int i=0;i<arrList.size();i++){
answer[i] = arrList.get(i);
}
return answer;
}
}
