카테고리 없음

코딩 기초 트레이닝 / 빈 배열에 추가, 삭제하기

서버관리자 페페 2024. 4. 11. 14:59

 

기존 배열을 갱신하는 것인가? 아니면 새 배열에 편하게 작성하는 것인가

 

배열 원소가 계속 변경되므로 arrayList를 사용하는게 좋겠다

 

 

idx에 접근할 수 있는 for?

value에 접근할 수 있는 enhanced?

while?

 

-> flag와 arr 두개에 동시 사용해야 하니까 일반 for문으로 하는게 좋겠다

 

마지막에 int[] 형식으로 출력해야 하므로, list를 array에 변경하는 작업이 필요하겠군

그런데 Integer는 int가 아니므로 수동 변환을 해야겠다

 

list.add는 0번 index에 추가된다. 어떻게 뒤에 추가하는가?

 

1 - size로 접근해서 size, size+1에 추가한다

2 - 그런데 제거할때도 똑같이 매번 size를 도출해내야 하므로 앞 뒤를 바꿔서 그냥 앞에 넣어버리고 마지막에 reverse하느다

 

collections나 arrays sort 사용할 필요 없이 옮겨담을때 idx를 순회하면 된다

 

같은 value지만 idx와 value와 동시에 사용된다

작업 위치는 별도로 주어진다 -> 마지막 위치에서 작업하라

 

 

 

 

 

add는 특정 idx를 인자로 전달하지 않으면 뒤에 삽입된다

헷갈리지 말것

 

 

문제 발생시 /**/ 블록 주석 처리해주거나, if문이면 예제에 따라 바로 break로 출력해볼수도 있겠다

 

동일 오류

 

 

 

 

역으로 순회할때는 DOC 배열은 i++라는 걸 인지

 

 

 

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            int exp = arr[i];
            if (flag[i]) {
                for (int j = 0; j < 2*exp; j++) {
                    list.add(0, arr[i]);
                }

            } else {
                while (exp > 0) {
                    list.remove(0);
                    exp--;
                }
            }
        }
        
        int L = list.size();
        int[] answer = new int[L];
        for (int i = 0; i < L; i++) {
            answer[i] = list.get(L-1-i);
        }
        
        return answer;
    }
}