入力と実行順序
読了目安 約2分
readLine で標準入力を読み、A+B 問題を解く。競プロの入出力の型を覚える。
この章の目次
競技プログラミングの問題は、「入力を受け取り、答えを出力する」形をしています。 入力の受け取り方を覚えると、解ける問題が一気に広がります。
readLine
標準入力は、プログラムに渡されるテキストです。 エディタの「標準入力」欄に書いた内容が、実行時にプログラムへ渡されます。
readLine() は標準入力を 1 行読み、文字列として返します。
let line = readLine()!
print("入力されたのは: \(line)")こんにちはreadLine()! の ! は「入力が必ずある」とみなす印です。
入力が尽きているとエラーで止まります。理由は オプショナル の型が関わるためで、いまは決まり文句として覚えれば大丈夫です。
"\(line)"のように、文字列の中に\(変数名)を書くと変数の中身が埋め込まれます。 文字列補間と呼ばれる Swift の機能です。
数値として読む
readLine() が返すのは文字列です。
計算に使うには Int(...) で整数に変換します。
let a = Int(readLine()!)!
let b = Int(readLine()!)!
print(a + b)3
5試してみよう: 標準入力欄の数値を変えて、出力が変わることを確かめてください。
1 行に複数の値があるとき
3 5 のように空白区切りで並ぶ入力は、split で分解します。
let parts = readLine()!.split(separator: " ").map { Int($0)! }
let a = parts[0]
let b = parts[1]
print(a + b)3 5split(separator: " ") で空白で区切り、map { Int($0)! } で全部を整数に変換します。
この 1 行は競プロの定型句です。そのまま覚えてください。
実行順序
プログラムは上から順に 1 行ずつ実行されます。
readLine() は呼ばれるたびに次の行を読みます。
読む順番と入力の行数が合っていないと、実行時エラーになります。
学びどころ
| 概念 | 一言まとめ |
|---|---|
readLine()! | 標準入力を 1 行読んで文字列で返す |
Int(文字列)! | 文字列を整数に変換する |
split + map | 空白区切りの 1 行を整数の配列にする定型句 |
| 文字列補間 | "\(x)" で文字列に値を埋め込む |
演習
1 行目に整数 A、2 行目に整数 B が入力されます。 A + B を出力してください。
入力例:
3
5
出力例:
8模範解答
let a = Int(readLine()!)!
let b = Int(readLine()!)!
print(a + b)