[프로그래머스] Lv.0 빈 배열에 추가, 삭제하기.java

hgghfgf·2023년 6월 10일
0

프로그래머스

목록 보기
140/227

빈 배열에 추가, 삭제하기.java

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        List<Integer> X = new ArrayList<>();

        for (int i = 0; i < arr.length; i++) {
            if (flag[i]) {
                int num = arr[i];
                for (int j = 0; j < num * 2; j++) {
                    X.add(num);
                }
            } else {
                int num = arr[i];
                int size = X.size();
                if (size >= num) {
                    for (int j = 0; j < num; j++) {
                        X.remove(size - 1 - j);
                    }
                }
            }
        }

        int[] answer = new int[X.size()];
        for (int i = 0; i < X.size(); i++) {
            answer[i] = X.get(i);
        }

        return answer;
    }
}

배열 arr과 flag를 인덱스 i를 기준으로 순회합니다.
flag[i]가 true인 경우 : arr[i] 값을 num 변수에 저장합니다.
num * 2번 만큼 num을 X 리스트에 추가합니다.
flag[i]가 false인 경우 : arr[i] 값을 num 변수에 저장합니다.
X 리스트의 현재 크기를 size 변수에 저장합니다.
X 리스트의 크기가 num보다 크거나 같은 경우 : num 개수만큼 X 리스트의 마지막 원소부터 제거합니다.
X 리스트의 원소를 배열 answer로 복사하여 반환합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0개의 댓글