[알고리즘문제풀기] 배열의 원소 삭제하기

silver's avatar
Mar 25, 2025
[알고리즘문제풀기] 배열의 원소 삭제하기

문제

내가 작성한 정답

boolean

import java.util.*; class Solution { public int[] solution(int[] arr, int[] delete_list) { ArrayList<Integer> answer1 = new ArrayList<>(); for(int i=0; i<arr.length; i++){ boolean del = false; for(int j = 0; j<delete_list.length; j++){ if(arr[i] == delete_list[j]) { del = true; break; } } if(!del) answer1.add(arr[i]); } int[] answer = new int[answer1.size()]; for(int i=0; i<answer.length; i++){ answer[i] = answer1.get(i); } return answer; }

ArrayList - contains

import java.util.*; class Solution { public int[] solution(int[] arr, int[] delete_list){ ArrayList<Integer> del = new ArrayList<>(); for(int i : delete_list){ del.add(i); } ArrayList<Integer> answer = new ArrayList<>(); for(int i : arr){ if(!del.contains(i)){ answer.add(i); } } return answer.stream().mapToInt(i->i).toArray(); } }

Set - contains

import java.util.*; class Solution { public int[] solution(int[] arr, int[] delete_list){ Set<Integer> del = new HashSet<>(); for(int i:delete_list){ del.add(i); } ArrayList<Integer> answer = new ArrayList<>(); for(int i : arr){ if(!del.contains(i)) answer.add(i); } return answer.stream().mapToInt(i->i).toArray(); } }

StreamAPI - ArrayList

import java.util.Arrays; class Solution { public int[] solution(int[] arr, int[] delete_list) { return Arrays.stream(arr) .filter(i -> !Arrays.asList(Arrays.stream(delete_list).boxed().toArray()).contains(i)) .toArray(); } }
notion image

StreamAPI - Set : ArrayList보다 성능이 살짝 더 좋음

import java.util.*; import java.util.stream.*; class Solution { public int[] solution(int[] arr, int[] delete_list) { return Arrays.stream(arr) .filter(i-> !(Arrays.stream(delete_list).boxed().collect(Collectors.toSet()).contains(i))) .toArray(); } }
notion image
💡

contains를 사용할 수 있는 클래스와 인터페이스

  1. Set - HashSet, TreeSet, LinkedHashSet
  1. List - ArrayList, LinkedList, Vector
  1. String
  1. Map - HashMap, TreeMap, LinkedHashMap - Map 인터페이스에는 containsKey()와 containsValue() 메서드가 있어서 각각 특정 키 또는 값을 포함하고 있는지를 확인한다.
  1. Collection
  1. Queue - LinkedList, PriorityQueue

다른 사람들의 정답

StreamAPI - anyMatch

import java.util.stream.IntStream; class Solution { public int[] solution(int[] arr, int[] delete_list) { return IntStream.of(arr).filter(i -> !IntStream.of(delete_list).anyMatch(s -> s == i)).toArray(); } }

ArrayList - remove

import java.util.*; class Solution { public int[] solution(int[] arr, int[] delete_list) { List<Integer> list = new ArrayList<>(); for(int n : arr) { list.add(n); } for(int n: delete_list) { list.remove((Integer)n); } int[] answer = new int[list.size()]; for(int i=0; i<list.size(); i++){ answer[i] = list.get(i); } return answer; } }
💡

remove

Java에서 remove 메서드는 주로 컬렉션 클래스에서 요소를 제거하는 데 사용된다. 이 메서드는 여러 가지 클래스에서 오버로딩되어 있으며 사용되는 클래스에 따라 다양한 방식으로 작동한다.
  1. List - ArrayList, LinkedList, Vector 인덱스에 해당하는 요소 제거:
    1. List<String> list = new ArrayList<>(Arrays.asList("apple", "banana", "cherry")); list.remove(1); // 인덱스 1의 요소("banana")를 제거 System.out.println(list); // 출력: [apple, cherry]
      특정 객체 제거:
      list.remove("apple"); // "apple" 요소를 제거 System.out.println(list); // 출력: [cherry]
  1. Set
    1. - HashSet, TreeSet, LinkedHashSet 특정 객체 제거:
      Set<String> set = new HashSet<>(Arrays.asList("apple", "banana", "cherry")); set.remove("banana"); // "banana" 요소를 제거 System.out.println(set); // 출력: [apple, cherry]
  1. Map - HashMap, TreeMap, LinkedHashMap 키에 해당하는 엔트리 제거:
    1. Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); map.remove("banana"); // 키 "banana"에 해당하는 엔트리 제거 System.out.println(map); // 출력: {apple=1}
  1. Queue - LinkedList, PriorityQueue 특정 객체 제거:
    1. Queue<String> queue = new LinkedList<>(Arrays.asList("apple", "banana", "cherry")); queue.remove("banana"); // "banana" 요소를 제거 System.out.println(queue); // 출력: [apple, cherry]
  1. 기본형 배열 기본형 배열에서는 remove 메서드를 직접 사용할 수 없는 대신에 배열을 리스트로 변환한 후 remove를 사용할 수 있다.
    1. int[] arr = {1, 2, 3, 4, 5}; List<Integer> list = new ArrayList<>(); for (int num : arr) { list.add(num); } list.remove(Integer.valueOf(3)); // 값 3을 제거 System.out.println(list); // 출력: [1, 2, 4, 5]
 
 
List에서는 인덱스나 객체로 요소를 제거할 수 있고, Set에서는 특정 객체를 제거하며, Map에서는 키를 사용하여 엔트리를 제거한다.기본형 배열에서는 직접 사용할 수 없지만, 리스트로 변환하여 사용할 수 있다.
Share article

silver