-> for i in 0 ... n 과 같이 0~ n까지를 차례로 접근할 수 있고,
for i in 0 ..< n 과 같이 n을 제외하고 접근할 수도 있다.
그렇다면, 한칸씩 건너뛰며 접근하고싶은 경우에는?
-> python: for i in range(0, 10, 2)와 같이 stride를 3번째 매개변수로 넣어줌.
( to: ~~ 에 입력한 숫자는 포함하지 않는다는 것을 조심!!! )
arr = ["a","b","c"] 인 경우,
-> python: "".join(arr) => "abc"
-> Swift는??? arr.joined(separator: "") == > "abc"를 반환
.split(separator:"")과 세트라고 생각하면 된다!!
let arr: Set<String> = ["a","b","c"] 인 경우
arr.contains("찾고싶은 원소")와 같이 원소 존재여부를 확인할 수 있다.
Array의 경우 O(n)이지만, Set의 경우 O(1)임을 주의!!!!!!!!!!!
Swift의 문자열(String)은 index로 접근하는 것이 불가능하다고 생각하고있었다.가능했었다...let s: String = "abcde"라면,String.Index(utf16Offset: 1, in: s) ==> Index 타입으로 return
s[Index]로 접근할 수 있다.
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로 접근하도록 작성해야한다.
코테 보기 전 보면 좋은 소소한 내용들 (0) | 2022.09.10 |
---|---|
[입출력] String배열과 Character 그리고 ascii (0) | 2022.08.19 |
Swift for Coding Interview - 입출력과 자주 쓰이는 프로퍼티를 중심으로 (0) | 2022.05.21 |