본문 바로가기
4.2 프로그래머스 & 코테문제/Java 풀이

[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/배열의 원소 삭제하기

by Dohi._. 2024. 8. 10.
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제설명

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

제한사항

  • 1 ≤ arr의 길이 ≤ 100
  • 1 ≤ arr의 원소 ≤ 1,000
  • arr의 원소는 모두 서로 다릅니다.
  • 1 ≤ delete_list의 길이 ≤ 100
  • 1 ≤ delete_list의 원소 ≤ 1,000
  • delete_list의 원소는 모두 서로 다릅니다.

풀이

추가할때 검사를 하면 되는 문제지만 n^2 +n이 되기 싫어  3n으로 설계하였습니다

여기서 중요한건 remove였는데 remove는 1.인덱스로 삭제 2. 해당 값(객체)과 동일한 내용 삭제

그래서 int가 아닌 Integer로 변경하여 값으로 인식하게 하였습니다.

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int[] delete_list) {
        List<Integer> list = new ArrayList<Integer> ();
        for(int a : arr){
            list.add(a);
        }
        for(int del : delete_list){
            if(list.contains(del)){
                list.remove(Integer.valueOf(del)); // del을 인덱스가 아닌 값으로 인식하게 한다    
            }
        }
        int[] answer = new int[list.size()];
        for(int i=0; i<answer.length;i++){
            answer[i]=list.get(i);
        }
        return answer;
    }
}

 

 

들어간 메소드 정리

List.remove(int a ) : 해당하는 인덱스 a에 있는 값을 지운다
List.remove(Object a ) : 해당하는 객체를  지운다

List.contains(a) : a가 있는지 없는지 확인 

728x90

댓글