정수 배열 nums와 정수 val이 주어졌을 때, nums에서 val이 포함된 모든 항목을 제자리에서 제거합니다. 요소의 순서는 변경될 수 있습니다. 그런 다음 nums에서 val과 같지 않은 요소의 수를 반환합니다.
nums에서 val과 같지 않은 요소의 개수가 k라고 가정할 때, 이를 허용하려면 다음과 같은 작업을 수행해야 합니다:
nums의 처음 k 요소에 val과 같지 않은 요소가 포함되도록 배열 nums를 변경합니다. nums의 나머지 요소는 nums의 크기만큼 중요하지 않습니다.
k를 반환합니다.
int[] nums = [...]; // 입력 배열
int val = ...; // 제거할 값
int[] expectedNums = [...]; // 올바른 길이의 예상 답안.
// val과 같은 값이 없는 상태로 정렬됩니다.
int k = removeElement(nums, val); // 구현을 호출합니다.
assert k == expectedNums.length;
sort(nums, 0, k); // nums의 처음 k 요소를 정렬합니다.
for (int i = 0; i < actualLength; i++) {
assert nums[i] == expectedNums[i];
}
위의 검증이 모두 통과되어야 합니다.
import java.util.*;
class Solution {
public int removeElement(int[] nums, int val) {
List<Integer> list = new ArrayList<>();
for (int num : nums) {
if (num == val) {
continue;
}
list.add(num);
}
for (int i = 0; i < list.size(); i++) {
nums[i] = list.get(i);
}
return list.size();
}
}
val에 해당 하는 값은 넘기고 list에 담은후 다시 처음부터 담았다.