새소식

반응형
250x250
Leetcode

[리트코드] Deleting Items From an Array - Remove Element

  • -
728x90
반응형

배열에서 주어진 val 값과 요소의 값이 일치하는 것을 배열에서 제거한 후 빈 요소가 없게 앞으로 당기는 문제


 

문제를 처음 접했을 때 '그냥 배열에서 주어진 값과 똑같은 요소를 다 지워버린 다음에 배열의 길이만 return 해주면 되는거 아니야?' 라고 간단하게만 생각했다. 그러나 반환값은 맞지만 만들어지는 배열이 달랐다.

문제를 풀기 전에 리트코드에서 주어진 설명을 읽어보았더니 답이 보였다.

 

반복문을 돌릴 때 증가 한계점을 아래와 같이 배열의 길이로 뒀었다. 그렇게 되면 문제점이 배열을 반환할 때 배열의 길이가 줄지 않고 그대로 반환한다는 점이었다. 

for(int i = 0; i < nums.length; i++)

그래서 배열의 길이를 다른 변수로 설정을 해준 뒤 배열의 요소가 주어진 int 값과 같을 때 뒤에 있는 요소들을 한 칸씩 당겨오고 배열의 길이가 설정된 변수를 1씩 줄여주면 되는 문제였다.

 

class Solution {
    public int removeElement(int[] nums, int val) {
        
        int length = nums.length;
        
        for(int i = 0; i < length; i++) {
            if(nums[i] == val) {
                for(int j = i; j < length - 1; j++) {
                    nums[j] = nums[j + 1];
                }
                i--;
                length--;
            }
        }
        
        return length;
    }
}
728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.