본문 바로가기
개인 공부/코딩테스트

[C++][leetcode] Move Zeros :: seoftware

by seowit 2020. 4. 5.

문제

 

 

접근방법

 

1. 0이 아닌 숫자들은 배열의 앞에서부터 채워나가고 0이면 넘어간다.

2. 1번을 하고 남은 배열의 인덱스는 모두 0으로 채운다.

 

소스코드

 

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int idx = 0;
        for(int i : nums){
            if(i != 0) {
                nums[idx] = i;
                idx++;
            }
        }
        for(int i =idx; i<nums.size(); i++){
            nums[i] = 0; 
        }
    }
};

 

1. idx는 0이 아닌 숫자가 나왔을 때 nums에 저장되는 인덱스(순서)를 의미한다.

2. 첫 번째 for문 : 0이 아닌 숫자에 대해서 nums[idx]에 저장한 후 idx를 +1 해준다.

3. 두 번째 for문 : idx부터 nums의 끝까지 0으로 채워준다.

댓글