학습일기 48 23.11.03

이건구·2023년 11월 3일
0

프로그래머스 자바 문제풀이

빈 배열에 추가, 삭제하기

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배열에 담아준다.

0개의 댓글