본문 바로가기
Leetcode

283. Move Zeroes

by Doromi 2023. 10. 31.
728x90
반응형
주어진 배열에서 숫자 0을 배열의 끝으로 이동시키는 문제입니다. 주어진 배열을 수정하며, 0 이외의 숫자들은 순서를 유지해야 합니다.

문제 설명:

주어진 배열 nums가 주어집니다. 이 배열에서 숫자 0을 배열의 끝으로 이동시키세요. 0 이외의 숫자들의 순서는 유지되어야 합니다.

예를 들어, 입력 배열 nums가 다음과 같다면:
[0, 1, 0, 3, 12]
이 배열을 수정하여 숫자 0을 배열의 끝으로 이동시키면:

[1, 3, 12, 0, 0]
노트:

배열을 수정하며 0을 뒤로 이동시켜야 합니다.
0 이외의 숫자들은 순서를 유지해야 합니다.
추가 배열을 사용하지 말고 주어진 배열을 직접 수정해야 합니다.
 public void MoveZeroes(int[] nums) {
        int count = 0;
        int index = 0;
        foreach(int i in nums){
            if(i == 0){
                count++;
            }
            else{
                nums[index++] = i; 
            }
        }
        if(count > 0){
            for(int k = 0;k<count;k++){
                nums[index++] = 0;
            }
        }
    }
 0 이외의 숫자를 배열의 앞쪽으로 이동시키고,

0의 개수에 따라 뒤에 0을 추가하는 방식으로 문제를 해결하는 좋은 접근 방법입니다. 코드는 foreach 루프를 사용하여 배열을 한 번 순회하고, 0이 아닌 숫자는 nums 배열의 앞쪽에 복사되고, 그 다음에 0을 개수에 따라 뒤에 추가합니다. 이로써 배열의 순서가 유지되고 0이 배열 뒤로 이동됩니다.

이 코드는 성능 면에서도 효율적입니다. 하나의 루프로 배열을 순회하며 중복 복사를 최소화하면서 0을 뒤로 이동시키기 때문입니다. 따라서 주어진 배열을 효과적으로 수정하여 문제를 해결할 수 있습니다.

 

728x90
반응형

'Leetcode' 카테고리의 다른 글

101. Symmetric Tree  (0) 2023.11.01
414. Third Maximum Number  (0) 2023.11.01
303. Range Sum Query - Immutable  (0) 2023.10.31
94. Binary Tree Inorder Traversal  (0) 2023.10.30
83. Remove Duplicates from Sorted List  (0) 2023.10.29