알고리즘을 문제를 풀면서 아스키코드 값을 출력해야 하는 경우 UnicodeScalar
를 사용하여 해결할 수 있습니다.
import Foundation
// String -> Ascii
let asciiIntValue = Int(UnicodeScalar("A")!.value)
// Ascii -> String
let result = String(UnicodeScalar(65)!)
print(asciiIntValue)
print(result)
계속 입력받아야 하는 경우 While let
을 사용하여 입력을 받으면 됩니다.
while let은 주어진 옵셔널 변수나 상수를 반복문 내에서 언래핑하고, 값이 존재하는 동안에만 반복문을 실행합니다.
import Foundation
while let input = readLine() {
print(input)
}
문자열 내의 특수한 문자들을 그대로 출력하려면 #
을 양 끝에 붙여주면 됩니다.
let bud = #"""
,r'"7
r`-_ ,' ,/
\. ". L_r'
`~\/
|
|
"""#
print(bud)
zip
은 스위프트의 내장 함수 중 하나로, 두 개 이상의 시퀀스를 조합하여 하나의 새로운 시퀀스를 생성하는 역할을 합니다.
let dic1 = Dictionary(uniqueKeysWithValues: zip("ABCDEFGHIJKLMNOPQRSTUVWXYZ", repeatElement(0, count: 26)))
let dic2 = Dictionary(uniqueKeysWithValues: zip("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 10...35))
Dictionary의 value 초기값이 없을 때 default
를 사용해서 초기값을 설정해 주면 됩니다.
var dic: [Character: Int] = [:]
let word = readLine()!.uppercased()
word.forEach {
dic[$0, default: 0] += 1
}
pow
를 사용하여 파라미터로 x에는 밑, y에는 지수를 넣어서 거듭제곱을 계산할 수 있습니다.
let n = Int(readLine()!)!
// 한 변의 사각형 개수: 2, 4, 8, 16, 32 ...
// 점 개수: 3^2, 5^2, 9^2, 33^2 ...
print(pow(pow(2, n) + 1, 2))
radix
를 사용하여 진법 변환을 쉽게 할 수 있습니다.
let nString = "ZZZZZ"
let num = 36
print(Int(nString, radix: num)!)
let decimal = 60466175
let num = 36
print(String(decimal, radix: num).uppercased())
n진법으로 변환 시 반드시 uppercased
를 사용해야 합니다.
삼각형의 결정 조건으로 a + b > c를 만족해야 한다.