정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
보통 자바 문제를 풀 때 그냥 배열 그대로 문제를 해결하려고 했었다. 문제를 계속 풀다보니 동적으로 할당 되어있는 배열로는 문제를 풀기 어려운 상황들에 가끔 직면하곤 했다. 그래서 본격적으로 리스트를 공부하며 수많은 오류들을 접하다 해결했는데 그래서인지 기록을 해두고 다시 코드를 리뷰해볼 필요가 있다고 생각했다.
Int, Integer 구분
첫 배열을 사용할 때 int와 integer에 대한 개념이 명확하지 않아서 제대로 사용하지 못했다..배열은 int형으로 사용하고 리스트에서는 Integer형으로 알맞게 사용해야한다.
리스트의 remove
for(int del : delete_list){
answer.remove(answer.indexOf(del));
}
remove는 실패 시 값이 -1이 나오게 된다. remove(-1)을 한다면 당연하게도 -1번째 인덱스를 찾을텐데 그럴 수는 없다. 그러니 당연히 오류가 발생한다.
import java.util.*;
class Solution {
public List solution(int[] arr, int[] delete_list) {
List<Integer> answer = new ArrayList<>();
for (int num : arr) {
answer.add(num);
}
for(int del : delete_list){
int index = answer.indexOf(del);
if (index != -1) {
answer.remove(index);
}
}
return answer;
}
}
유익한 글 잘 봤습니다, 감사합니다.