[프로그래머스] 배열의 원소 삭제하기

최혜원·2023년 6월 12일
2

Algorithm

목록 보기
1/3

📍문제설명

정수 배열 arrdelete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.


📍나의풀이

package algorithm;

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

public class Solution {
// 배열 arr을 ArrayList에 담아주고
// delete_list와 비교하면서 값이 같으면 answer에 arr[i]값을 지워주기
    public List solution(int[] arr, int[] delete_list) {
        List<Integer> answer = new ArrayList<>();

        for (int array: arr) {
            answer.add(array);
        }
        for (int array : arr) {
            for (int deleteList : delete_list) {
                if (array == deleteList) {
                    answer.remove(Integer.valueOf(array));
                    //오류
                    //answer.remove(array);
                }
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Solution array = new Solution();
        System.out.println(array.solution(new int[]{293, 1000, 395, 678, 94}, new int[]{94, 777, 104, 1000, 1, 12}));
    }
}

📍주의할것

ArrayIndexOutOfBoundsException 에러

정해진 배열의 크기보다 크거나 음수 index에 대한 요청이 있으면 ArrayIndexOutOfBoundsException이 발생한다.

  • remove(int index) : 배열의 index값 필요
//에러
answer.remove(array); -> answer.remove(1000); 
1000 > 배열의 크기=5 
  • Integer.valueOf() : 지정한 수의 값을 보유하는 정수 객체를 반환
answer.remove(Integer.valueOf(array)); -> answer.remove(arr[1]);
profile
어제보다 나은 오늘

0개의 댓글