문제 설명
정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소 ≤ 1,000
- arr의 원소는 모두 서로 다릅니다.
- 1 ≤ delete_list의 길이 ≤ 100
- 1 ≤ delete_list의 원소 ≤ 1,000
- delete_list의 원소는 모두 서로 다릅니다.
입출력 예
arr | delete_list | result |
[293, 1000, 395, 678, 94] | [94, 777, 104, 1000, 1, 12] | [293, 395, 678] |
[110, 66, 439, 785, 1] | [377, 823, 119, 43] | [110, 66, 439, 785, 1] |
입출력 예 설명
입출력 예 #1
- 예제 1번의 arr의 원소 중 1000과 94가 delete_list에 있으므로 이 두 원소를 삭제한 [293, 395, 678]을 return 합니다.
입출력 예 #2
- 예제 2번의 arr의 원소 중 delete_list에 있는 원소는 없습니다. 따라서 arr 그대로인 [110, 66, 439, 785, 1]을 return 합니다.
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
ArrayList<Integer> arraylist1 = new ArrayList<Integer>();
for(int i=0; i<arr.length; i++) {
arraylist1.add(arr[i]);
}
for(int element : delete_list) {
if(arraylist1.contains(element)) {
arraylist1.remove(Integer.valueOf(element));
}
}
int j = arraylist1.size();
int[] answer = new int[j];
for(int i=0; i<j; i++) {
answer[i] = arraylist1.get(i);
}
return answer;
}
}
딱히 좋은 코드라고는 생각이 안 든다.
아무리 봐도 에러를 못 잡겠어서 Integer.valueOf()랑 arraylist1.get()는 gpt 돌려 보고 알았다.
코딩테스트 문제를 볼 때 개인이 머릿속에 떠올리게 되는 로직은 다 고만고만한데
코드로 그 생각을 구현할 수 있느냐, 얼마나 이해가 쉽고 퍼포먼스가 좋은 코드를 짜느냐는
보통 관련 콜렉션이나 메서드를 아느냐 모르느냐에 따라 갈린다고 생각한다.
나는 모르는 게 너무 많은데...
'코딩테스트 연습' 카테고리의 다른 글
0 떼기 (0) | 2024.04.10 |
---|---|
배열 만들기 3 (0) | 2024.04.10 |
특별한 이차원 배열 1 (0) | 2024.04.10 |
특별한 이차원 배열 2 (0) | 2024.04.10 |
배열 비교하기 (0) | 2024.04.10 |