본문 바로가기

iOS

Swift Stride

728x90
반응형
SMALL

https://developer.apple.com/documentation/swift/collections

 

Collections | Apple Developer Documentation

Store and organize data using arrays, dictionaries, sets, and other data structures.

developer.apple.com

 

 

to가 있고, through 이 있습니다 :)

to는 마지막 값을 포함하지 않고, through는 마지막값을 포함한다고 되어 있네요.

 

from은 시작 to, through는 마지막, by는 간격이 되겠습니다! :) 앞으로는 stride에 적응하는 시간을 가져야할 것 같습니다.

 

오히려 숙달되면 편할 것 같아유. 처음 where 문을 접했을 때도 너무 신기했던 것 처럼 흥미를 느끼고 있습니다.

 

예를들어, 최근 푼 문제 (20500 - Ezreal 여눈부터 가네 ㅈㅈ) https://www.acmicpc.net/problem/20500 에 대입하면 

 

기존 코드

import Foundation

func generateTable(_ num: Int) -> [Int] {
    if num <= 4 { return [0, 1, 1, 3]}
    var table = Array(repeating: 0, count: num + 1)
    table[0...4] = [0, 1, 1, 3]
    for idx in 4..<table.count {
        var differenceValue = table[idx - 2] - table[idx - 4]
        if differenceValue < 0 {
            differenceValue += 1000000007
        }
        table[idx] = (table[idx - 2] + (differenceValue) * 4) % 1000000007
    }
    return table
}

let num = Int(readLine()!)
let table = generateTable(num!)
print(table[num! - 1])

 

stride(from:, to:, by:)

import Foundation

func generateTable(_ num: Int) -> [Int] {
    if num <= 4 { return [0, 1, 1, 3]}
    var table = Array(repeating: 0, count: num + 1)
    table[0...4] = [0, 1, 1, 3]
    for idx in stride(from: 4, to: table.count, by: 1) {
        var differenceValue = table[idx - 2] - table[idx - 4]
        if differenceValue < 0 {
            differenceValue += 1000000007
        }
        table[idx] = (table[idx - 2] + (differenceValue) * 4) % 1000000007
    }
    return table
}

let num = Int(readLine()!)
let table = generateTable(num!)
print(table[num! - 1])

 

stride(from:, through:, by:)

import Foundation

func generateTable(_ num: Int) -> [Int] {
    if num <= 4 { return [0, 1, 1, 3]}
    var table = Array(repeating: 0, count: num + 1)
    table[0...4] = [0, 1, 1, 3]
    for idx in stride(from: 4, through: table.count - 1, by: 1) {
        var differenceValue = table[idx - 2] - table[idx - 4]
        if differenceValue < 0 {
            differenceValue += 1000000007
        }
        table[idx] = (table[idx - 2] + (differenceValue) * 4) % 1000000007
    }
    return table
}

let num = Int(readLine()!)
let table = generateTable(num!)
print(table[num! - 1])

 

가 되겠네요:)

 

728x90
반응형
LIST

'iOS' 카테고리의 다른 글

AccessToken, RefreshToken  (0) 2024.04.15
Thread - 01  (0) 2023.07.23
SwiftUI로 네이버 탭바 흉내나기  (0) 2023.07.09
DDD 중간 회고 feat. ( fastlane, slack, jira, tuist )  (1) 2023.07.09
SwiftUI CustomSlidebar  (0) 2023.06.24