개발자는 기록이 답이다
[프로그래머스][Java][Lv.0] 배열의 원소 삭제하기 본문

https://school.programmers.co.kr/learn/courses/30/lessons/181844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
최근에 자바를 한국어하는 만큼 당연하게 잘 쓸 수 있어야 된다고 해서 레벨 0을 하루에 10개 정도 씩 풀려고 하고 있다.
레벨 0를 풀다보면 괜찮은 함수를 발견하게 되서 뜻밖에 수익이 있어서 감사하다.
첫번째 풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
List<Integer> list = new ArrayList<>();
for (int num : arr) {
list.add(num);
}
for (int num : delete_list) {
list.remove((Integer)num); // Integer로 형변환!
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
list.remove() 메서드는 int 값을 받을 때 그 값을 리스트에서 제거하는 것이 아니라, 그 값의 인덱스를 제거하려고 시도합니다.
int를 Integer로 형변환하여 리스트에서 해당 Integer 객체를 제거합니다. 이렇게 하면 int 값 자체가 아니라 Integer 객체를 삭제하므로 원하는 동작이 발생하게 됩니다.
ArrayList.remove()
public E remove(int index)
public boolean remove(Object o)


테스트 1 〉 | 통과 (2.71ms, 74.6MB) |
테스트 2 〉 | 통과 (2.08ms, 77.5MB) |
테스트 3 〉 | 통과 (2.91ms, 78.4MB) |
테스트 4 〉 | 통과 (3.05ms, 72.1MB) |
테스트 5 〉 | 통과 (2.37ms, 79.3MB) |
테스트 6 〉 | 통과 (2.17ms, 78.8MB) |
테스트 7 〉 | 통과 (2.35ms, 77.9MB) |
테스트 8 〉 | 통과 (4.26ms, 74.8MB) |
테스트 9 〉 | 통과 (2.55ms, 74.2MB) |
테스트 10 〉 | 통과 (3.36ms, 74.8MB) |
테스트 11 〉 | 통과 (6.42ms, 78.1MB) |
테스트 12 〉 | 통과 (2.14ms, 75.7MB) |
테스트 13 〉 | 통과 (1.85ms, 74.6MB) |
두번째 풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
List<Integer> list = new ArrayList<>();
for (int num : arr) {
list.add(num);
}
List<Integer> deleteList = new ArrayList<>();
for (int num : delete_list) {
deleteList.add(num);
}
list.removeIf(deleteList::contains); 위 아래 똑같이 동작 : Predicate로 조건을 건것임
// list.removeIf(element -> element == num);
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
removeIf 메서드는 Java의 컬렉션에서 제공하는 메서드 중 하나로, Predicate를 이용하여 컬렉션의 요소를 조건에 따라 삭제하는데 사용됩니다. stream에 있는 filter랑 같은 원리이다. Predicate는 조건을 검사하는 함수를 나타내는 함수형 인터페이스로, removeIf 메서드는 이 Predicate를 사용하여 조건을 만족하는 요소를 삭제합니다.

테스트 1 〉 | 통과 (2.16ms, 75.8MB) |
테스트 2 〉 | 통과 (2.35ms, 66.9MB) |
테스트 3 〉 | 통과 (2.22ms, 73.5MB) |
테스트 4 〉 | 통과 (2.29ms, 71.7MB) |
테스트 5 〉 | 통과 (2.97ms, 84.8MB) |
테스트 6 〉 | 통과 (2.30ms, 71.7MB) |
테스트 7 〉 | 통과 (3.50ms, 82.3MB) |
테스트 8 〉 | 통과 (2.38ms, 72.2MB) |
테스트 9 〉 | 통과 (2.25ms, 72.4MB) |
테스트 10 〉 | 통과 (2.49ms, 75.5MB) |
테스트 11 〉 | 통과 (2.29ms, 75.7MB) |
테스트 12 〉 | 통과 (2.21ms, 75.2MB) |
테스트 13 〉 | 통과 (2.30ms, 84.2MB) |
참고 링크 :
how to remove an Integer item in an ArrayList
Java, how to remove an Integer item in an ArrayList
Suppose I have such an ArrayList: ArrayList<Integer> list = new ArrayList<Integer>(); After the adding operation: list.add(2); list.add(3); list.add(5); list.add(7); I want to remove
stackoverflow.com
[Java] ArrayList에서 특정 값 삭제하기
ArrayList에서 특정값을 삭제하는 방법을 소개합니다. ArrayList.remove() ArrayList.removeAll() Iterator.remove() 1. ArrayList.remove() public E remove(int index) public boolean remove(Object o) ArrayList의 remove() 메소드를 사용
hianna.tistory.com
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Java][Lv.3] 이중우선순위큐 (1) | 2023.12.03 |
---|---|
[프로그래머스][Java][Lv.2] 더 맵게 (1) | 2023.11.17 |
[프로그래머스][Java][Lv.2] 최솟값 만들기 (0) | 2023.10.18 |
[프로그래머스][Java][Lv.1] 모의고사 (0) | 2023.10.04 |
[프로그래머스][Java][Lv.1] 최소 직사각형 (0) | 2023.10.04 |