백준

백준 스위프트 2164 카드2

화찌님 2023. 1. 5. 23:53


import Foundation
//2164 카드2
let num = Int(readLine()!)!
var arr =  Array(1...num)
var temp = 0

if num == 1 {print(1)}
else{
    while true{
        arr[temp] = 0
        arr.append(arr[temp+1])
        arr[temp+1] = 0
        if arr[arr.count-2] == 0 {print(arr.last!); break}
        temp += 2
    }
}

여러 시도를 해봤지만 자꾸 시간초과가 떴었다.

분명 시간을 특별히 잡아먹는 코드가 없는데 왜 그러지 싶어서 끝내 블로그에 있는 코드를 참고하였다.

이유는 배열.remove인덱스를 하는것이 시간을 많이 잡아먹었던것

배열에 있는 인덱스를 삭제하게된다면 뒤에있는 값들이 전부 한칸씩 땡겨지게 되면서 시간을 잡아먹었다.

그래서 삭제 대신 그 자리에 0을 넣어 코드를 작성하였다.