반응형
문제
Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Note that you must do this in-place without making a copy of the array.
input int array에 있는 모든 0을 뒤로 보내주어야 합니다.
예시
해설
fun moveZeroes(nums: IntArray): Unit { //unit을 리턴하기때문에 nums array의값을 바꿔주면됩니다.
var i = 0 //변경할 position 값, i
var k = 0 //k는 이동될 position 값
if (nums.size == 1) { //만약 nums array가 아이템이 하나라면 intarray를 반환합니다.
} else {
while (k < nums.size) { //k는 이동될 위치 값인데 size보다 커서는 안됩니다.
if (nums[i] == 0) { //변경할 값이 0이라면 뒤로 보내야합니다.
if (nums[k] != 0) { //이동될곳이 0이면 안됩니다.
nums[i] = nums[k] 만약 //이동될곳이 0이 아닌 정수라면 변경할자리에 nums[k]정수를 넣어주고
nums[k] = 0 // 정수였던자리에 0을 넣어줌으로서 0은 뒤로 보내고 정수는 앞으로 가져옵니다.
i++ // 그후에 i와 k 자리에 1씩 더해줍니다.
k++
} else {
k++ //이동되는 위치에 다시 0이 있다면 다음 자리에서 정수를 찾아야하기때문에 k에 1을 더해줍니다.
}
} else { //변경할 값이 0이 아니라면 다음으로 넘어갑니다.
i++
k++
}
}
}
}
- i는 변경할 position 값,
- k는 이동될 position 값,
- i자리에서는 0을찾고 k자리에서 정수를 찾을때마다 i자리에 정수를 놓고, k자리에 0을 놓으며 왼쪽에 정수가모이고 오른쪽에 0이 모일때까지 반복하는 알고리즘을 만들어야합니다.
반응형