알고리즘 문제 풀이에 유용한 Swift 기법
알고리즘 문제 풀이에 유용한 Swift 기법
여기에 있는 몇몇 기법을 사용하기 위해서
Foundation
프레임워크를 import해야 합니다.
표준 입력 받기
표준 입력을 받는 방법입니다. 반환 타입은 String? 입니다. 표준 입력이 없을 경우를 고려하여 바인딩을 하면 됩니다.
let input = readLine()!
표준 입력 공백 단위로 분리하기
표준 입력을 공백 단위로 분리하는 방법입니다.
split() 메서드의 반환 값은 [String.Subsequence] 이므로 적절히 데이터를 가공하여 사용하면 됩니다.
let inputs = readLine()!.split(separator: " ").map {
Int($0)!
}
표준 출력하기
표준 출력하는 방법입니다.
print(input)
표준 출력 마지막 문자 변경하기
표준 출력 print() 메서드의 마지막 문자는 줄 바꿈 문자입니다. 이를 변경하는 방법입니다.
print(input, terminator: "")
빈 배열 생성하기
빈 배열을 생성하는 방법입니다.
var array = [Int]()
특정 값으로 초기화된 크기 n 배열 생성하기
특정 값으로 초기화되는 배열을 생성하는 방법입니다.
var array2 = Array(repeating: 3, count: 5)
2차원 배열 생성하기
2차원 배열을 생성하는 방법입니다. 배열의 타입이 배열인 형태입니다.
var matrix = [[Int]]()
2차원 배열 탐색하기
2차원 배열을 탐색하는 방법입니다.
var matrix1 = [
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
]
for row in 0..<matrix1.count {
for column in 0..<matrix1[0].count {
let val = matrix1[row][column]
}
}
2차원 배열 방향 탐색하기
2차원 배열에서 방향을 가지고 탐색하는 방법입니다.
let dx = [0, -1, 0, 1]
let dy = [1, 0, -1, 0]
let x = 2
let y = 2
for index in 0...2 {
let nx = x + dx[index]
let ny = y + dy[index]
}
배열 순서 뒤집기
배열의 순서를 거꾸로 뒤집는 방법입니다.
array.reverse()
문자열 인덱스 다루기
let string = "string"
문자열 첫 번째 인덱스 구하기
문자열 첫 번째 인덱스를 구하는 방법입니다.
string.firstIndex
문자열 마지막 인덱스 구하기
문자열 마지막 인덱스를 구하는 방법입니다. string.endIndex
를 그대로 사용하면 Index out of range
에러가 발생합니다.
let lastIndex = string.index(before: string.endIndex)
n번째 인덱스 구하기
첫 번째 인덱스부터 시작해서 n번째 인덱스를 구하는 방법입니다.
let nIndex = string.index(firstIndex, offsetBy: 0)
n번째 인덱스 출력하기
n번째 인덱스 문자를 출력하는 방법입니다.
print(string[nIndex])
특정 문자 인덱스 찾기
특정 문자가 시작되는 인덱스를 찾는 방법입니다.
let index = string.firstIndex(of: "t")!
십진법을 n진법으로 변환하기
십진법을 n진법으로 변환하는 방법입니다. Int 타입의 형태를 n 진법으로 표현한 문자열을 얻습니다.
let binary = String(14, radix: 2)
n진법을 십진법으로 변환하기
n진법을 십진법으로 변환하는 방법입니다. String 타입의 형태를 십진법으로 표현한 정수를 얻습니다.
let decimal = Int("1101", radix: 2)!
소수점 반올림하기
round(), rounded(_:) 메서드를 사용할 수 있습니다.
var floatNumber = 1.123
floatNumber.round()
// 1.0
Swift에서는 특정 자리수까지 반올림하는 기능이 없기 때문에 반올림 조작은 다음과 같이 합니다. 100을 곱한 후 round() 함수를 적용하고 다시 100으로 나누면 소수점 2자리 수까지 반올림할 수 있습니다.
var floatNumber = 1.123
roundedResult = round(result * 100) / 100
// 1.12
소수점 올림/내림하기
ceil()과 floor() 메서드를 사용하여 소수점을 올리거나 내릴 수 있습니다.
// 소수점 올림
var floatNumber = 1.123
let roundedResult = ceil(floatNumber)
// 2.0
// 소수점 내림
var floatNumber = 1.123
let roundedResult = floor(floatNumber)
print(roundedResult)
// 1.0
범위 지정 연산자를 사용하여 문자열 및 배열 잘라내기
// 두 번째 인덱스부터 마지막 인덱스까지 잘라내기
let string = "a1 9 2 3 1"[1...]
// "9 2 3 1"
댓글남기기