[프로그래머스/181844] 배열의 원소 삭제하기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
//시간: 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)
: 특정 값을 찾아 제거하는 메서드이다.