본문 바로가기

iOS

[iOS] Swift Basic for PS

Swift basic for PS

본 문서에는 알고리즘 문제풀이를 위한 Swift 기본 문법을 정리한다.

 

키보드 입력받기


let inputValue = readline()
print(inputValue)

image

 

readLine() 함수의 반환값은 Optional String이다.

 

따라서, 옵셔널 값을 반환한다.

 

Optional Unwrapping 을 강제로 진행하는 것은 지양해야 하지만 PS 목적의 코드이며 변수에 값이 들어있음을 확신할 수 있기에 강제 언래핑을 진행한다.

 


let inputValue = readline()

print(inputValue!)

image

 

이를 응용해보자.

split()으로 쪼개기

let nums = readLine()!.split(seperator: " ")
// ["1", "2", "3", "4", "5"]

split()은 매우 많이 사용되니까 꼭 익히도록 한다.

 

배열 다루기


알고리즘 문제풀이시 배열 사용은 필수불가결하다.

 

swift 에서는 mapfilter 가 매우 유용하게 사용된다.

 

빈 배열 생성

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