class Solution {
    public int removeElement(int[] nums, int val) {
        int k = 0;
		int valCnt = 0;
		
		for (int i = 0; i < nums.length; i++) {
			if(nums[i] == val) valCnt++;
		}		
		for (int i = 1; i <= valCnt; i++) {			
			for (int j = 0; j < nums.length; j++) {				
				if(nums[j] == val) {										
					for (int x = j+1; x < nums.length; x++) {
						nums[x-1] = nums[x];
					}				
				}
			}
		}
		k = nums.length-valCnt;
		return k;
    }
}

 

- In-place로 처리를 할 때는 Two Pointer로 해결할 수 있는 경우가 많음

- j를 옮겨가면서 val과 같은지 확인하고, 다르면 j의 값은 i에 넣고 i위치를 하나 올림

class Solution {
    public int removeElement(int[] nums, int val) {
        int i = 0;                
        
        for (int j = 0; j < nums.length; j++) {
			if(nums[j] != val) {
				nums[i] = nums[j];
				i++;
			}
		}        
		return i;
    }
}