•
print
print(1, 2, 3, 4, 5, 6, separator: "...", terminator: "끗!\n")
// 1...2...3...4...5...6끗!
Swift
복사
Component vs. Split
Component | Split |
return [String] | return [Subsquence] |
import Foundation 필요 | import Foundation 불필요 |
Empty Subsequence를 항상 리턴
→ 따라서, Split 보다 속도가 느림 | omit를 true로 설정했을 경우 Empty Subsequence 리턴
→ 원하면 “”(빈 값) return 안함 |
문자열로 Split 가능 | Character로만 Split 가능 |
max Split 지정 가능 | |
O(n)의 시간 복잡도 |
반복문
•
Swift에는 do-while 이 없음 → repeat-while 로 사용
repeat {
print("repeat-while!")
} while n > 10
Swift
복사
•
ForEach, For-In
단순 배열 생성 시에는 map를 사용하는 것이 더 효과적
ForEach | For-In |
return으로 중간에 빠져나옴 | break로 중간에 빠져나옴 |
break, continue 사용 불가 | break, continue 사용 가능 |
ForEach 보다 속도가 빠름 | |
filter, reduce 보다 속도가 빠름 |
•
Stride
// through에 들어가는 value가 범위에 포함
stride(from: _, through: _, by: _)
// to에 들어가는 value는 범위에 포함되지 않음
stride(from: _, to: _, by: _)
// 거꾸로 for문 돌리기
stride(from: n, through: 0, by: -1)
// ==
for i in array.reversed()
Swift
복사
•
입력 값만큼 for문을 돌려야 할 때
for _ in 0..<Int(readLine()!)! { }
Swift
복사
String
•
Ascii to String, Character
Character(UnicodeScalar(97))
String(UnicodeScalar(97))
Swift
복사
•
String, Character to Acsii
Character("a").asciiValue!
Swift
복사
•
문자 대치
replacingOccurrences(of: "*", with: "-")
Swift
복사
•
소수 셋째자리까지
String(format: "%0.3f", value)
Swift
복사
Int
•
UInt 범위를 넘는 Int 값은 [Int]로 만들어서 사용 → 각각의 원소를 더하는 식으로(carry 올림 사용)
// 너무 긴 Int 값을 배열로 바꿔서 각각의 원소의 값을 더해줌
//let arr = readLine()!.split(separator: " ")
//let a = splitNum(String(arr[0])), b = splitNum(String(arr[1]))
//let l = isALonger(a,b) ? a : b
//let s = isALonger(a,b) ? b : a
//print(addNum(l,s))
func splitNum(_ str: String) -> [Int] {
let intArr = str.map { Int(String($0))! }
return intArr
}
func isALonger(_ a: [Int],_ b: [Int]) -> Bool {
return a.count >= b.count ? true : false
}
func addNum(_ l: [Int],_ s: [Int]) -> String {
var long = l, short = s
var carry = 0, sum = 0
var result = ""
func updateResult() {
if sum > 9 {
carry = 1
sum = long.isEmpty ? sum : sum - 10
}
result = String(sum) + result
}
while !short.isEmpty {
sum = long.removeLast() + short.removeLast() + carry
carry = 0
updateResult()
}
while !long.isEmpty {
sum = long.removeLast() + carry
carry = 0
updateResult()
}
return result
}
Swift
복사
10757. 큰 수 A+B
고차함수
•
flatMap → flatten, nil 제거, 옵셔널 바인딩 → compactMap
◦
2차원 배열 → 1차원 배열
flatMap, compactMap 사용
func flatten() {
let arr: [[Int]] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let numArr = arr.flatMap({ $0 })
print(numArr)
}
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
Swift
복사
•
reduce
(1...50).reduce(0) { $0 + $1 }
Swift
복사
•
joined
배열을 결합시켜서 string으로 return
func flatten() {
let arr: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let numArr = arr.compactMap({ String($0) })
let result = numArr.joined(separator: " ")
print(result)
}
// 1 2 3 4 5 6 7 8 9
Swift
복사