Swift로 알고리즘 입문!
확실히 알고리즘같은 걸 공부하기엔 파이썬이 훨씬 편했던 것 같다.. 자주 사용하는 함수들이나 프로그램 자체가 Swift는 프론트 개발에 맞춰있어서 알고리즘 문제를 풀기엔 간단한 문제라도 아주 낯선느낌..? ㅎㅎㅎ
첫번째 난관은 입력 받아오기!
플레이그라운드에서는 입력 받아오는 게 불가하고, 새로운 Xcode 프로젝트를 생성할 때, macOS 의 Command Line Tool 을 사용해야만 console 창에 값을 입력할 수 있다고 한다.
백준 1000번 <A+B>
문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 : 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 : 첫째 줄에 A+B를 출력한다.
readLine()으로 입력을 받아와 배열로 나눠주는 방법에는 components(seperatedBy: _)와 split(seperator: _) 이렇게 두가지가 있는데, c전자의 경우 import Foundation을 해주어야 하고, 후자의 경우에는 따로 안해줘도 된다고 한다.
근데 막상 실행해보니 import Foundation을 하지 않는 것이 실행 시간은 훨씬 빠른 것 같다.
import Foundation
let line = readLine()!
let lineArr = line.components(separatedBy: " ")
let a = Int(lineArr[0])!
let b = Int(lineArr[1])!
print(a+b)
위의 코드는 12m, 아래는 4m
let input = readLine()!
let lineArr = input.split(separator: " ")
let a = Int(lineArr[0])!
let b = Int(lineArr[1])!
print(a+b)
import Foundation
let line = readLine()!
let intArr = line.components(separatedBy: " ").map{ Int($0)! }
print(intArr.reduce(0, +))
print((readLine()?.split(separator: " ").map { Int($0)! }.reduce(0, +))!)
readLine(strippingNewline:)
: 표준 입력에서 읽어들인 문자열을 반환하는 함수. (현재 줄의 끝까지 or 파일 끝에 도달할 때까지)
Returns a string read from standard input through the end of the current line or until EOF(end-of-file) is reached.
func readLine(strippingNewline: Bool = true) -> String?
리턴값이 옵셔널이기 때문에 force unwrapping해주거나 안전하게 if let을 사용하여 optional binding을 해주어야 한다.
components(seperatedBy:)
: 주어진 구분 기호로 나누어진 문자열들을 포함한 배열을 반환하는 함수.
Returns an array containing substrings from the receiver that we have been divided by a given separator
func components(separatedBy separator: String) -> [String]
map(_:)
:
Returns an array containing the results of mapping the given closure over the sequence's elements. (Generic Instance Method)
func map<T>(_ transform: (Element) throws -> T) rethrows -> [T]
reduce(_:_:)
: 주어진 클로저에 따라 element들을 하나의 값으로 통합하는 함수.
Returns the result of combining the elements of the sequence using the given closure.
func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result
'Algorithm > Baekjoon' 카테고리의 다른 글
[Swift 알고리즘] 백준 2231 분해합 (0) | 2022.04.28 |
---|---|
[Swift 알고리즘] 백준 2798 블랙잭 (0) | 2022.04.28 |
[Swift 알고리즘] 백준 2447 별 찍기 - 10 (0) | 2022.04.27 |
[Swift 알고리즘] 백준 10870 피보나치 수 5 (0) | 2022.04.27 |
[Swift 알고리즘] 백준 10872 팩토리얼 (0) | 2022.04.27 |