상세 컨텐츠

본문 제목

Swift For Coding Interview 2탄 - 자주 쓰이는 Expression (수시 업데이트)

Swift for Coding Interview

by 앱등개발자IOS 2022. 6. 3. 14:42

본문

# Swift의 for문

-> for i in 0 ... n 과 같이 0~ n까지를 차례로 접근할 수 있고,

     for i in 0 ..< n 과 같이 n을 제외하고 접근할 수도 있다.

     그렇다면, 한칸씩 건너뛰며 접근하고싶은 경우에는?

      -> python: for i in range(0, 10, 2)와 같이 stride를 3번째 매개변수로 넣어줌.

      -> Swift: for i in stride(from:, to:, by: )로 설정해준다. ( by가 음수이면 거꾸로 접근 가능! )

( to: ~~ 에 입력한 숫자는 포함하지 않는다는 것을 조심!!! )

 

# Swift의 배열을 문자열로!!

arr = ["a","b","c"] 인 경우,

-> python: "".join(arr)  => "abc"

-> Swift는???   arr.joined(separator: "")  == > "abc"를 반환

.split(separator:"")과 세트라고 생각하면 된다!!

 

# Swift의 Set 원소 포함여부!!

let arr: Set<String> = ["a","b","c"] 인 경우

arr.contains("찾고싶은 원소")와 같이 원소 존재여부를 확인할 수 있다.

 

Array의 경우 O(n)이지만, Set의 경우 O(1)임을 주의!!!!!!!!!!!

 

# Swift의 문자열을 index로 접근?!

Swift의 문자열(String)은 index로 접근하는 것이 불가능하다고 생각하고있었다.가능했었다...let s: String = "abcde"라면,String.Index(utf16Offset: 1, in: s)   ==> Index 타입으로 return

 

s[Index]로 접근할 수 있다.

 

# Swift의 배열을 여러 요소로 정렬!

 

python의 경우, (Int, Int)형태의 Tuple이 담긴 배열에서,

첫 번째 원소들을 기준으로 정렬하며, 첫 원소가 같은 경우, 두 번째 원소를 기준으로 (오름차순 or 내림차순) 정렬하는 코드는

arr.sort(key = lambda x: (x[0], x[1]))이다.

 

Swift의 경우, 코드가 조금 더 복잡하다.

클로저 형태로 사용하는 방법을 알아보자. 똑같이 첫째 원소 기준으로, 이것이 같을 경우 둘째 원소를 기준으로 오름차순 정렬을 할 것이다.

arr.sort{ (first, second) -> Bool in

    if first.0 == second.0 {

        return first.1 < second.1

    }

    return first.0 < second.0

}

 

first와 second는 임의의 명칭이므로, 자신이 원하는대로 작성해도 된다!!

+ .0과 .1은 Tuple이기때문에 위와 같이 작성한 것이고, 2차원 배열이라면 [0], [1]과 같이 Index로 접근하도록 작성해야한다.

 

 

관련글 더보기