릿코드(LEETCODE)

LEETCODE - 1089. Duplicate Zeros

cepiloth 2020. 6. 7. 20:09
반응형

https://leetcode.com/problems/duplicate-zeros/

 

vector int 어레이에 원소의 값이 0 이면 한칸식 0으로 채우주고 shift 하는 문제

 

1101 -> 1100

12012001 -> 12001200

 

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        // 임시 vector int 를 만들고 0 이면 한번더 넣어 준다.
        // 괜히 머리아프게 shift 하지 말자 쉽게 풀리면 쉽게 풀리는 방법으로 풀자
        vector<int> tmp;
        for (int i = 0; i < arr.size(); i++) {
            int value = arr[i];
            tmp.push_back(value);
            if (value == 0) {
                tmp.push_back(value);
            }
        }

        for (int i = 0; i < arr.size(); i++) {
            arr[i] = tmp[i];
        }
    }
};

 

회고

처음에 이문제 풀때 vector<int> 를 선언 안하고 풀려고 했다.

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        
        for(int i=0; i<arr.size(); i++) {
            int value = arr[i];
            if(value == 0) {
                int move_pos = arr.size() - i-1;
                for(int j=0; j<move_pos; j++) {
                    arr[arr.size()-j-1] = arr[arr.size()-j-2];
                }
                arr[i+1] = 0;
                i++;
            }
        }
    }
};

value 값이 0 인경우에만 한칸식 shift 하려고 했는데 여기서 -_- 삽질을 더 많이 했다.

 

아아아 오늘은 뭐이렇게 개똥철학처럼 문제가 안풀리나 정신차리고 집에나 가야겠다.

반응형