릿코드(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 하려고 했는데 여기서 -_- 삽질을 더 많이 했다.
아아아 오늘은 뭐이렇게 개똥철학처럼 문제가 안풀리나 정신차리고 집에나 가야겠다.
반응형