Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Manhattan Distance

Swift : 알고리즘, 코딩 테스트 대비 Basic 본문

Swift

Swift : 알고리즘, 코딩 테스트 대비 Basic

timotheekim10 2024. 5. 27. 03:26

기본 입력 받기

// String 타입 입력 받을 때 사용
var input = readLine()!

// Int 타입 입력 받을 때 사용
var input = Int(readLine()!)!

공백 있는 숫자 입력 받기

var arr = readLine()!.split(separator: " ").map {Int($0)!} // 1 2 3
print(arr) // [1, 2, 3]

공백 없는 숫자/문자열을 배열로 입력 받기

// 공백 없는 숫자 -> 배열
var arr = Array(readLine()!).map {Int(String($0))!} 123
print(arr) // [1, 2, 3]

// 공백 없는 문자열 -> 배열
var arr = Array(readLine()!).map {String($0)} // ABC
print(arr) // ["A", "B", "C"]

prefix / suffix

let str = "Manhattan Distance"

// prefix : 시작 기준으로 지정한 문자 개수 출력
let prefixStr = str.prefix(5)
print(prefixStr)  // "Mahat"

// suffix : 종료 기준으로 지정한 문자 개수 출력
let suffixStr = str.suffix(6)
print(suffixStr) // "stance"

let arr = [1, 2, 3, 4, 5]
print(arr.prefix(2)) // [1, 2]
print(arr.prefix(10)) // [1, 2, 3, 4, 5]

let arr = [1, 2, 3, 4, 5]
print(arr.suffix(2)) // [4, 5]
print(arr.suffix(10)) // [1, 2, 3, 4, 5]

subString

let str = "Manhattan Distance"

// 3번째부터 끝까지
let startIdx: String.Index = str.index(str.startIndex, offsetBy: 3)
var result = String(str[startIdx...])
print(result) // "hattan Distance"

// 처음부터 3번째까지
let endIdx: String.Index = str.index(str.startIndex, offsetBy: 3)
var result = String(str[...endIdx])
print(result) // "Manh"

문자열 반복

let str = String(repeating: "A", count: 10)
print(str) // AAAAAAAAAA

동일한 값으로 구성된 n(행) x m(열) 배열 만들기

var graph: [[Int]] = Array(repeating: Array(repeating: 0, count: m), count: n)

문자열에 특정 문자 바꾸기

// import Foundation
let str1 = "Manhattan!Distance!"
let str2 = str1.replacingOccurrences(of: "!", with: "?")
print(str2) // "Manhattan?Distance?"

개행없는 print

print("Manhattan", terminator: "")
print("Distance")
// "ManhattanDistance"

forEach

let arr: [Int] = [1, 2, 3, 4]
arr.forEach {
    print($0)
}
// 1
// 2
// 3
// 4

stride

for i in stride(from: 2, to: 10, by: 2) {
    print(i)
}
// 2
// 4
// 6
// 8

for i in stride(from: 2, through: 10, by: 2) {
    print(i)
}
// 2
// 4
// 6
// 8
// 10

 


절댓값

print(abs(-10)) // 10

제곱

// import Foundation
let x = 3.0
print(pow(x, 2)) // 9.0
print(pow(x, 3)) // 27.0

제곱근

// import Foundation
let x = 9.0
print(sqrt(x))

자릿수 더하기

let n = 123
// reduce([초기값]) / $0 = 0, 1(0+1), 3(1+2), 6(3+3) / Int($1)! = 1, 2, 3
print(String(n).map{ String($0)}.reduce(0){ $0 + Int($1)! }) // 6

배열 슬라이싱

var arr = [1, 2, 3, 4, 5]
print(arr[1 ... 3]) // [2, 3, 4]

map

var arr = ["1", "2", "3", "4"]
// 각 원소를 전부 Int로 Mapping
print(arr.map { Int($0)! }) // [1, 2, 3, 4]

filter

var arr = [1, 2, 3, 4]
print(arr.filter { $0%2 == 0 }) // [2, 4]

reduce

let arr = [1, 2, 3]
// reduce([초깃값]) / $0 = 3, 4(3+1), 6(4+2), 9(6+3) / $1 = 1, 2, 3
var sumFromThree: Int = arr.reduce(3) {
    print("\($0) + \($1)")
    // 3 + 1
    // 4 + 2
    // 6 + 3
    return $0 + $1
}
print(sumFromThree) // 9

var arr = [1, 2, 3]
print(arr.reduce(0, +)) // 6

joined

var arr = ["Manhattan", "Distance"]

var result1 = arr.joined()
print(result1) // "ManhattanDistance"

var result2 = arr.joined(separator:" ")
print(result2) // "Manhattan Distance"

var result3 = arr.joined(separator:", ")
print(result3) // "Manhattan, Distance"

var arr: [Int] = [1, 2, 3]
print(arr.map{String($0)}.joined()) // 123
print(arr.map{String($0)}.joined(separator: " ")) // 1 2 3
print(arr.map{String($0)}.joined(separator: ", ")) // 1, 2, 3

2차원 배열 정렬

var arr = [[1, 3], [2, 2], [3, 1]]

let sortedArr1 = arr.sorted(by: {$0[1] < $1[1] }) // 각 배열 두 번째 값 기준으로 오름차순
print(sortedArr1) // [[3, 1], [2, 2], [1, 3]]

let sortedArr2 = arr.sorted(by: {$0[1] > $1[1] }) // 각 배열 두 번째 값 기준으로 내림차순
print(sortedArr2) // [[1, 3], [2, 2], [3, 1]]