풀이

 

 

import java.util.Arrays;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        int[] answer = {};
        for(int i=0;i<flag.length;i++) {  				// flag 길이만큼 순회
            if(flag[i]) {
                int[] temp = new int[arr[i]*2];			// arr[i]*2만큼 임시 배열 생성, 각 요소에 arr[i] 할당
                for(int j=0;j<temp.length;j++) {
                    temp[j] = arr[i];
                }
                answer = IntStream.concat(Arrays.stream(answer), Arrays.stream(temp)).toArray();  // 기존 answer와 임시 배열 합치기
            }
            else {
                answer = Arrays.copyOfRange(answer,0,answer.length-arr[i]);    // 기존 answer 배열에서 arr[i]크기만큼 줄여서 다시 할당
            }
        }
        return answer;
    }
}

 

 

배열 공부한다고 Array만 쓰려다가 괜히 복잡하게 했다;;

list를 쓰면 add, remove를 사용하면 간편한데..

역시 Array보다 linked list가 입력, 삭제가 간편하긴하다.

+ Recent posts