-
수정 날짜 : 2021.05.18
입력받기
정수 1개 입력받기
var n = Int(readLine()!)!
공백 단위로 정수형 배열 입력받기
var arr = readLine()!.split(separator: " ").map { Int($0)! } // 이게 더 빠름 var arr = readLine()!.split(separator: " ").map { Int(String($0))! }
출력
소수점 이하 k번째 자리까지 출력
- 소수점 이하 k+1번째 자리에서 반올림하여 소수점 이하 k번째 자리까지 출력
var a = 1.637999 var b = round(a * 1000) / 1000 let c = String(format: "%.3f", b) // 1.638 // 또는 //var c = String(format: "%.3f", (a * 1000).rounded() / 1000)
Math
n 제곱
import Foundation pow(3, 2) // 9
String
String은 값 타입(value type)이므로 다른 함수나 메서드로부터 생성되면 값을 복사해서 생성하기 때문에 수정해도 원본 문자열이 수정되지 않는다.
문자열 길이
let strings = "abcde" print(strings.count) // 5
- RandomAccessCollection(랜덤 접근 컬렉션)은 O(1)의 복잡도를 보장하지만, 그렇지 않다면 O(n)의 복잡도 즉, collection의 길이만큼 시간이 걸린다는 내용이다.
- 따라서 String의 길이를 이용한 문제는 Array로 변환하여 사용하면 시간을 단축시킬 수 있다.
- 배열은 RandomAccessCollection이므로 O(1)의 복잡도를 갖는다.
공백 지우기
let str = " Hi there " let trimmed = str.trimmingCharacters(in: .whitespacesAndNewlines) print(str) print(trimmed)
배열 String으로 변환 후 join하기 -> String
배열 원소들을 문자열로 반환
var array = [1, 2, 3] print(array.map { String($0) }.joined(separator: " ") // "1 2 3"
Array
기본 값으로 배열 생성
repeating
메서드와count
메서드를 이용var threeDoubles = Array(repeating: 0.0, count: 3) // threeDoubles : Double 타입의 [0.0, 0.0, 0.0]
2차원 배열 생성
- 빈 배열 생성 후 입력받기
let n = Int(readLine()!)! var house: [[Int]] = [] for _ in stride(from: 0, to: n, by: 1) { house.append(readLine()!.split(separator: " ").map { Int(String($0))! }) } print(house)
입력
3
26 40 83
49 60 57
13 89 99출력
[[26, 40, 83], [49, 60, 57], [13, 89, 99]]repeating
과count
메서드를 이용해서 생성하기
// INF 값으로 채워진 (n + 1) x (n + 1) 크기의 2차원 배열 var graph = Array(repeating: Array(repeating: INF, count: n + 1), count: n + 1) // n개의 행을 갖는 2차원 빈 배열 var graph = Array(repeating: Array<Int>(), count: n) var graph = [[Int]](repeating: [Int](), count: n)
'공부 > Swift' 카테고리의 다른 글
print() vs dump() (0) 2021.06.02 Swift : ASCII 코드 변환 방법 (0) 2021.05.17 댓글