[JAVA] 프로그래머스 : 배열 조각하기

조예빈·2024년 8월 27일
0

Coding Test

목록 보기
123/136

https://school.programmers.co.kr/learn/courses/30/lessons/181893#

이 문제는 index에서의 반례를 찾는 데 시간이 많이 걸렸다.

ArrayList에서 요소를 제거하면 list의 index 값에도 변화가 생기기 때문에 j값을 조절 해 주어야 한다. 다만, list의 맨 앞 요소를 지울 때에는 지우고 나서의 지운 것이 list의 0번 요소이므로 list.remove(0)을 query[i]번 만큼 반복해 주어야 한다.

import java.util.*;

class Solution {
    public ArrayList solution(int[] arr, int[] query) {
        ArrayList<Integer> list = new ArrayList<>();
        
        for(int i=0; i<arr.length; i++){
            list.add(arr[i]);
        }
        
        for(int i=0; i<query.length; i++){
            if(i % 2 == 0){
                int idx = query[i]+1;
                for(int j=idx; j<list.size(); j++){
                    list.remove(j);
                    j--;
                }
            } else {
                for(int j=0; j<query[i]; j++){
                    list.remove(0);
                }
            }
        }
        return list;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글