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

☑️ 문제

프로그래머스 181844

☑️ 풀이

첫 번째 풀이

//시간: 0.18ms
//메모리: 85.2MB

import java.util.*;

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

        for (int i = 0; i < delete_list.length; i++) {
            map.put(delete_list[i], 1);
        }

        for (int i = 0; i < arr.length; i++) {
            if (map.getOrDefault(arr[i], 0) == 0) {
                list.add(arr[i]);
            }
        }

        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }

        return answer;
    }
}
  • HashMap 을 사용해서 먼저 삭제할 배열을 담는다.
  • arr 를 돌면서 HashMap에 해당 값이 없으면 List 에 추가해주었다.

두 번째 풀이

//시간: 0.59ms
//메모리: 90.1MB

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int[] delete_list) {
        List<Integer> list = new ArrayList<>();
        for (int a : arr) {
            list.add(a);
        }

        for (int d : delete_list) {
            list.remove((Integer)d);
        }

        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}
  • 다른 사람의 풀이를 보고 다시 풀어보았다.
  • List 에 먼저 arr 의 원소들을 다 담은 후, delete_list 에 해당하는 원소를 remove 메서드를 사용해서 제거한다.
    • remove((Integer) value) : 특정 값을 찾아 제거하는 메서드이다.

© 2021. All rights reserved.

yaejinkong의 블로그