
突然ですが、みなさんは Swift という
プログラミング言語 を聞いたことがありますか?
Apple が開発した言語で、iPhoneアプリ・iPadアプリ・macOSアプリなどを作る際に欠かせない、今もっとも人気のある言語のひとつです。
ちなみに Wikipedia には次のように書かれています。
Swift(スウィフト)は、Apple の iOS / macOS / Linux / Windows で利用できるプログラミング言語である。
今回はそんな Swift を使って、競技プログラミングサイト AtCoder の問題を解きながら、基本的な文法・入出力・for文・if文などを一気に学べる内容をまとめました。
Swift に触れてみたい人や、アプリ開発へ一歩踏み出したい人にピッタリの内容です!
まずは Swift の基本文法を確認していきましょう。
競技プログラミングに必要な文法はそう多くないので、一度覚えてしまえばどんどん問題が解けるようになります。
■ 標準入力の受け取り方
1行を文字列として受け取る基本形は次の通りです。
let line = readLine()!
数値として受け取りたい場合は Int() で変換します。
■ 空白区切りで複数の数字を受け取る(配列)
let numbers = readLine()!.split(separator:" ").map { Int(String($0))! }
Python のように split + map で簡単に書けます。
■ 出力の書き方
let n = 2
print("Yes")
print(1, n)
// Yes
// 1 2
Swift の print は Python にとてもよく似ています。複数引数を渡すとスペースで区切られます。
■ For文
0 〜 n-1 の範囲をまわす書き方はこちら。
let n = Int(readLine()!)!
var sum = 0
for i in 0..
Swift の範囲指定は A ..< B で「A 以上 B 未満」を表します。
また、変数は var、定数は let を使います。
■ If文
let n = 10
if n 0 {
print("Yes")
} else {
print("No")
}
// No
Pythonとは違い、条件式の後に {} が必要です。
ここまで習得できれば、AtCoderの初歩問題は十分解けます。それでは実際に解いていきましょう!
AtCoder Beginners Selectionを解く
AtCoder Beginners Selection は、AtCoder 社が提供する初心者向けの定番問題集です。
全部で11問あり、後ろに行くほど難易度が上がります。ここでは最初の3問を Swift で解いてみます。
第1問:ABC086A – Product
問題文
2つの整数 a, b の積が奇数か偶数か判定してください。
解答(Swift)
let ab = readLine()!.split(separator:" ").map { Int(String($0))! }
print((ab[0] * ab[1]).isMultiple(of: 2) ? "Even" : "Odd")
Swift には .isMultiple(of: ) という便利なメソッドがあるので、
「偶数=2の倍数」で一発判定できます。
第2問:ABC081A – Placing Marbles
解答(Swift)
let s = readLine()!
var sum = 0
for i in s {
sum += Int(String(i))!
}
print(sum)
3桁の文字列(例:「101」)の中の “1 の数” を数えるだけの問題。
Swift の for-in で1文字ずつ処理できるのでシンプルに書けます。
第3問:ABC081B – Shift only
解答(Swift)
let n = Int(readLine()!)!
var a = readLine()!.split(separator:" ").map { Int(String($0))! }
var count = 0
var check = false
while true {
for i in 0..
すべての数字が偶数かどうかをチェックし、偶数ならまとめて2で割る……という操作を繰り返して最大回数を求めます。
Swift の isMultiple、while true、a[i] /= 2 など、実務でも役立つ書き方が詰まった良問です。
Swift を初めて触ってみて感じたのは、Python のように直感的で読みやすいのに、C言語のような高速性と厳密さも持っているということ。
特に isMultiple や範囲指定など、初心者にも優しい設計が印象的です。
iPhoneアプリ・macOSアプリを作りたい人はもちろん、文法を学ぶ手段として AtCoder を活用するのも非常におすすめです。
Swift の学習をぜひ楽しんでみてください!