본문 바로가기
Algorithm/LeetCode

[LeetCode] 283. Move Zeroes (Swift)

by 원만사 2022. 8. 10.
반응형
 

Move Zeroes - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

풀이

 입력으로 주어진 nums 배열의 길이만큼만 반복하며 배열의 원소가 0인지를 비교하면 된다.

 

 현재 인덱스의 원소가 0이면 현재 위치의 0을 제거하고 뒤에 append 해준다. 이때 뒤에 있던 숫자들은 앞으로 한 칸씩 당겨지므로 인덱스의 값을 증가시킬 필요는 없다.

 현재 인덱스의 원소가 0이 아닐 경우에는 인덱스를 증가시켜 다음 숫자에 대해서 판단하도록 한다. 

 

코드

class Solution {
    func moveZeroes(_ nums: inout [Int]) {
        let numLength: Int = nums.count // nums 배열의 길이
        var index: Int = 0 // 현재 인덱스
        
        for _ in 0..<numLength { // nums 배열의 길이만큼만 반복하면 된다.
            if nums[index] == 0 {
                // 현재 숫자가 0일 경우 현재 위치에서 제거하고 뒤에 삽입한다.
                // 뒤에 있는 숫자가 앞으로 당겨지므로 인덱스는 증가시킬 필요 x
                nums.append(nums.remove(at: index))
            } else {
                index += 1 // 0이 아닐 경우에 인덱스를 1 증가시킨다.
            }
        }
    }
}
반응형

댓글