初心者向けswift競プロ備忘録
今回は競プロ初心者である私がswiftで競プロをする際に必ず使うような処理の仕方を備忘録としてまとめていきたいと思います。
入力編
- 標準入力をString型で使いたい時
let input = readLine()!
- 標準入力をInt型で使いたい時
let input = Int(readLine()!)!
- 標準入力がスペースによって区切られている時
let input = readLine()!
let splited_input = input.split(separator: " ")
let a = splited_input[0]
let b = splited_input[1]
//キャストする場合は
let num_a = Int(a)
//このように書くことができます。
このように書くと一つずつ定数として取得することができます。
スペースではなくカンマで区切られている場合はseparatorの部分をスペースからカンマに変えると取得できます。
またaやbをInt型にキャストすれば数字として扱うことも可能です。
- 標準入力が改行によって区切られている時
let input1 = readLine()!
let input2 = readLine()!
このように改行された行数分入力を繰り返すと取得することができます。
メソッド編
- 指定した文字列が含まれているかの判定
import Foundation
let string:String = "Hello World"
if string.contains("Hello") {
print("Helloが含まれる")
}
//trueが返されるので"Helloが含まれる"がprintされる
- 指定した文字列を繰り返す
let a = String(repeating: "あいうえお", count: 3)
print(a)
//あいうえおあいうえおあいうえお
- 指定した文字列を置換する
import Foundation
let before = "りんごが食べたいな"
let after = before.replacingOccurrences(of: "りんご", with: "ぶどう")
print(after)
//ぶどうが食べたいな
- Int型配列の全要素の合計値を求める
let array: [Int] = [1, 2, 3, 4, 5]
let result: Int = array.reduce(0) { $0 + $1 }
print(result)
//15
reduce( )の中身が自由に決められる初期値です。
その後の$0や$1に関しては私も曖昧なので知りたい人はぜひ調べてみてください。
たまに使う小技編
- 改行せずにprintする
print("ABC", terminator: "")
print("DEF")
//ABCDEF
terminator:" "と書くとスペースを空けてprintすることができます。
- 絶対値を求める
let a:Int = -123
print(abs(a))
//123
let b:Double = -4.56
print(fabs(b))
//4.56
Int型に対してはabsを使ってキャストしてください。
またDouble型やFloat型に対してはfabsを使ってキャストしてください。
- 平方根を求める
let a:Double = 4.0
print(sqrt(a))
//2.0
let b:Double = 2.0
print(sqrt(b))
//1.41421356...
Double型に対してsqrtでキャストをすると平方根を求めることができます。