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

디하·2023년 12월 7일
0

프로그래머스

목록 보기
5/10
post-thumbnail

문제

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





내 풀이

import java.util.*;

class Solution {
    public List solution(int[] arr, int[] delete_list) {
        List<Integer> answer = new ArrayList<>();
        
        for(int i=0;i<arr.length; i++){
            answer.add(arr[i]);            
        }
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<delete_list.length; j++){
                if(arr[i] == delete_list[j]){
                    answer.remove(Integer.valueOf(arr[i])); //1.
                } 
            }
        }
        
        return answer;
    }
}
  1. arr[i]는 기본 데이터 유형인 int이지만, remove 메소드는 객체를 요구한다
    그래서 Integer.valueOf(arr[i])를 사용하여 int 값을 Integer 객체로 변환해야한다
    -> 이 부분을 헤매서.. 계속 문제 푸는데 실패를 했다
  1. 자동 박싱 방법
    또 다른 방법도 있길래 기록해 두려 한다
import java.util.ArrayList;
import java.util.List;

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

        for (int value : arr) {
            answer.add(value);
        }

        for (int value : delete_list) {
            answer.remove(value); // 자동 박싱: int를 Integer로 자동 변환
        }

        return answer;
    }
}

for-each 루프를 사용하여 배열의 값들을 answer 리스트에 추가하고, 또 다른 for - each 루프를 사용하여 delete_list배열의 값들을 리스트에서 제거 하는 데
remove 메소드는 자동박싱을 통해 int 값을 Integer로 변환하여 리스트에 해당 값을 제거 하도록 해준다

profile
🖥️ ⌨️🖱️🩵

0개의 댓글