Swift basic for PS
본 문서에는 알고리즘 문제풀이를 위한 Swift 기본 문법을 정리한다.
키보드 입력받기
let inputValue = readline()
print(inputValue)
readLine()
함수의 반환값은 Optional String이다.
따라서, 옵셔널 값을 반환한다.
Optional Unwrapping
을 강제로 진행하는 것은 지양해야 하지만 PS 목적의 코드이며 변수에 값이 들어있음을 확신할 수 있기에 강제 언래핑을 진행한다.
let inputValue = readline()
print(inputValue!)
이를 응용해보자.
split()으로 쪼개기
let nums = readLine()!.split(seperator: " ")
// ["1", "2", "3", "4", "5"]
split()
은 매우 많이 사용되니까 꼭 익히도록 한다.
배열 다루기
알고리즘 문제풀이시 배열 사용은 필수불가결하다.
swift
에서는 map
과 filter
가 매우 유용하게 사용된다.
빈 배열 생성
var emptyArr: [Int] = []
var emptyArr = [Int]()
var emptyArr: Array<Int> = []
어떠한 방식을 사용해도 상관없다, 본인이 편한것으로 사용하는 것이 제일 좋다!
생성과 동시에 초기화
var array = Array(1...5)
print(array) // [1, 2, 3, 4, 5]
혹은 이와 같은 방식으로 생성과 동시에 초기화도 가능하다.
길이 지정 배열 생성
var arr = Array(repeating: 0, count: 3)
print(arr) // [0, 0, 0]
혹은 배열의 길이를 지정하여 생성도 가능하고..!
2차원 배열 생성
let matrix = [[Int]]()
let arr: [[Int]] = Array(repeating:Array(repeating: 0, count: 5), count: 3)
print(arr)
//[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
내부의 count
가 열, 외부 count
가 행을 담당한다.
따라서, 위 행렬은 3 x 5 사이즈를 갖는다.
배열 뒤집기
arr = Array(1...5)
arr.reversed()
배열 정렬하기
var arr = Array(1...5)
var arr2 = Array(1..<5)
print(arr.sorted()) // [1, 2, 3, 4, 5]
print(arr.sorted(by: >)) // [5, 4, 3, 2, 1]
핵심 map, filter, reduce
map
var arr = ["1", "2", "3", "4"]
print(arr.map { Int($0)!})
map
은 이름 그대로 맵핑을 진행한다,
클로저로 각 항목들을 반영한 결과물을 가진 새로운 배열을 생성한다.
위와 같이 사용하면 String
객체를 Int
객체로 모두 변환할 수 있다.
filter
var arr = Array(1...5)
arr.filter{ $0 % 2 == 0 }
filter
는 클로저로 각 항목들을 비교하여 원소들 중 특정 조건에 맞는 원소만 뽑아내는 필터링을 진행한다.
reduce
var arr = [1, 2, 3 ,4]
print(arr.reduce(0, +)) // 10
reduce
는 배열의 각 항목들을 재귀적으로 클로저를 적용시켜 누적값으로 하나의 값을 만든다.
'iOS' 카테고리의 다른 글
[iOS] Observer Pattern in Swift (0) | 2020.06.10 |
---|---|
[iOS] 고차함수 in Swift (0) | 2020.06.07 |
[iOS] How to use Firebase Database in iOS (0) | 2020.06.04 |
[iOS] How to use Firebase Auth in iOS (0) | 2020.06.02 |
[iOS] Unit Test (0) | 2020.05.29 |