코딩 테스트, 초급, moveZeros - YouTube
문제 출처 - (1) Move Zeroes - LeetCode
내 풀이
class로 되어있어서 신기함.
class Solution:
def moveZeroes(self, nums):
index = 0
count = 0
while True:
if index == len(nums) - count:
return nums
else:
if nums[index] == 0:
count += 1
nums.append(0)
del nums[index]
else:
index += 1
return
idea
[0,5,0,7,6,3] in place에서
0을 끝으로 보내되, 순서를 바꾸지 말아야 한다.
0을 찾아서 끝으로 보내자!
그러다보면, operation이 복잡해진다.
0을 밀자.
숫자를 찾아서 왼쪽으로 보낸다면?
숫자가 이동할 이유는 없다.
basic idea
0이 아닌 숫자를 찾아서 왼쪽으로 보낸다.
index를 정의한다.
숫자를 찾아서 swap 혹은 copy라고 생각한다.
void movesZeroes(int [] nums)
{
int wIdx = 0;
for (int idx = 0; idx < nums.length ; idx++)
{
if (nums[idx]!=0)
{
swap(nums[wIdx], nums[idx]);
wIdx++;
}
}
for (;wIdx<num.length;wIdx++)
{
nums[wIdx] = 0;
}
}
다시 풀어보기
class Solution:
def moveZeroes(self, nums):
clean_zone = 0
for index in range(len(nums)):
if nums[index] != 0:
nums[clean_zone], nums[index] = nums[index], nums[clean_zone]
clean_zone += 1
else:
pass
print(nums)
return nums
s = Solution()
s.moveZeroes([0,1,2,3,4,0,0,3,4,2])
point 1. index를 옮겨가며 문제를 풀어라
point 2. pivot index를 두 개 잡는다.
'Computer Science > 자료구조' 카테고리의 다른 글
LeetCode 209. Minimum Size Subarray Sum | python | Two pointer (0) | 2021.09.12 |
---|---|
코드테스트 Arrays 초급 | find pivot index, minimum size Subarray sum | 코드없는 프로그래밍 (0) | 2021.09.05 |
코딩테스트 기초 배열 Binary Search | 코드없는 프로그래밍 (0) | 2021.09.05 |
코딩테스트 Arrays 이론 | 코드없는 프로그래밍 (0) | 2021.09.05 |
Back to 알고리즘! | 코딩테스트 연습 level 2- 124 나라의 숫자들 (0) | 2021.09.02 |