새소식

반응형
Algorithm/Array

[LeetCode] 283 Move zeros

  • -
반응형

배열에 존재하는 0을 모두 배열의 끝으로 옮겨라 

단, 새로운 배열을 정의하지 않고 주어진 배열에서만 문제를 해결하라

0 이외에 숫자들의 순서는 변경되지 않아야 한다.

class Solution {
    public void moveZeroes(int[] nums) {
        
    }
}

 

배열 문제를 바라보는 기본적인 시각을 길러주는 문제이다.

포인터 두 개를 이용해서 문제의 요구사항을 처리하는 것! 

 

하나는 숫자를 찾는 포인터

나머지는 0의 위치를 가리키는 포인터 

 

숫자를 찾는 포인터가 for문을 돌며 숫자를 찾고 

숫자를 찾았다면 0의 위치를 가리키는 포인터와 swap 

swap이 된 경우에는 0의 위치를 가리키는 포인터는 숫자로 채워졌으니 ++1 하여 다음 위치를 가리킨다. 

 

더보기
{
    int i = 0; // point 0
    int j = 0; // find num

    for (; j < nums.length; j++) {
        if (nums[j] != 0) { // !! found
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;

            i++;
        }
    }

}

기본적인 문제임에도 두 개의 포인터를 활용하는 사고방식이 없었다면 어떻게 해결해야 할지 막연했을 것이다.

알고리즘 문제를 푸는 기본적인 개념을 익히는 좋은 문제인 거 같다. 

 

 

반응형

'Algorithm > Array' 카테고리의 다른 글

[LeetCode] 209 Minimum Size Subarray Sum  (0) 2025.06.30
[LeetCode] 724 Find Pivot Index  (0) 2025.06.28
[LeetCode] 704 Binary Search  (0) 2025.06.23
[코딩테스트] Array  (0) 2025.06.21
Contents

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

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