본문 바로가기
코딩테스트 연습

배열의 원소 삭제하기

by 신재은👩🏼‍💻 2024. 4. 10.

문제 설명

정수 배열 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의 원소는 모두 서로 다릅니다.

 

입출력 예

arr delete_list result
[293, 1000, 395, 678, 94] [94, 777, 104, 1000, 1, 12] [293, 395, 678]
[110, 66, 439, 785, 1] [377, 823, 119, 43] [110, 66, 439, 785, 1]

 

입출력 예 설명

 

입출력 예 #1

  • 예제 1번의 arr의 원소 중 1000과 94가 delete_list에 있으므로 이 두 원소를 삭제한 [293, 395, 678]을 return 합니다.

입출력 예 #2

  • 예제 2번의 arr 원소  delete_list 있는 원소는 없습니다. 따라서 arr 그대로인 [110, 66, 439, 785, 1] return 합니다.

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] arr, int[] delete_list) {
        
        ArrayList<Integer> arraylist1 = new ArrayList<Integer>();
        
        for(int i=0; i<arr.length; i++) {
            arraylist1.add(arr[i]);
        }
        
        for(int element : delete_list) {
            if(arraylist1.contains(element)) {
                arraylist1.remove(Integer.valueOf(element));
            }
        }
        
        int j = arraylist1.size();
        int[] answer = new int[j];
        
        
        for(int i=0; i<j; i++) {
            answer[i] = arraylist1.get(i);
        }
        
        return answer;
    }
}


딱히 좋은 코드라고는 생각이 안 든다.

아무리 봐도 에러를 못 잡겠어서 Integer.valueOf()랑 arraylist1.get()는 gpt 돌려 보고 알았다.

코딩테스트 문제를 볼 때 개인이 머릿속에 떠올리게 되는 로직은 다 고만고만한데

코드로 그 생각을 구현할 수 있느냐, 얼마나 이해가 쉽고 퍼포먼스가 좋은 코드를 짜느냐는

보통 관련 콜렉션이나 메서드를 아느냐 모르느냐에 따라 갈린다고 생각한다.

 

나는 모르는 게 너무 많은데...

'코딩테스트 연습' 카테고리의 다른 글

0 떼기  (0) 2024.04.10
배열 만들기 3  (0) 2024.04.10
특별한 이차원 배열 1  (0) 2024.04.10
특별한 이차원 배열 2  (0) 2024.04.10
배열 비교하기  (0) 2024.04.10