Leetcode) Move Zeroes

Duna·2021년 8월 5일
0
post-thumbnail

Top Interview Questions
Easy Collection

Link of Problem

LEVEL : 🌕 🌕 🌑 🌑 🌑 (하)


Easy Collection의 여덟번째 문제인 Move Zeroes를 풀어봤습니다.

문제 제목 그대로, 0인 값들을 뒤쪽으로 옮기는 문제였습니다.

이번 문제에서는 들어오는 nums의 값이 inout으로 표시가 되어서 직접 사용할 수 있었는데요, 항상 inout으로 되어 있는 문제는 새로운 배열을 만드는 것보다 그 자체에서 값을 바꿨을 때 효율이 컸어서 이번에도 그렇게 해보려고 노력했습니다.

코드를 보면서 설명드리겠습니다.

1️⃣ 번째 방법

이번에는 1번째 방식으로 한 번에 문제를 풀었습니다.

저는 일단 위에서 말한 것처럼 지금 주어진 배열에서 문제를 바로 풀기 위해서 nums에서 0을 찾으면 해당 0를 지우고 맨 뒤로 0를 넣는 방식으로 코드를 짰습니다.

그렇게 되면 index가 0에서 바로 1로 계속해서 +1되는 방식이 아닌 해당 수가 0이 아니라면 +1되는 방식으로 진행되어야 합니다. 그러다보니 index를 조건문에 넣게 되면 1개라도 0이 있을 경우 조건을 영영 못 맞출 수도 있습니다.

그래서 따로 cnt라는 값을 둬서 한 턴마다 +1되도록 했습니다. 이렇게 했을 경우 원소의 개수에 맞게 조건문을 돌릴 수 있어서 좋았습니다.

func moveZeroes(_ nums: inout [Int]) {
    guard nums.count > 1 else { return }
    
    var index = 0
    var cnt = 0
    
    while cnt < nums.count {
        if nums[index] == 0 {
            nums.remove(at: index)
            nums.append(0)
        } else {
            index += 1
        }
        cnt += 1
    }
}

Runtime은 32ms정도로 좋았습니다.

profile
더 멋진 iOS 개발자를 향해

0개의 댓글