【Swift】AtCoder Beginners SelectionでSwiftを学ぶ ~初心者編~

突然ですが、みなさんは Swift という
プログラミング言語 を聞いたことがありますか?
Apple が開発した言語で、iPhoneアプリ・iPadアプリ・macOSアプリなどを作る際に欠かせない、今もっとも人気のある言語のひとつです。

ちなみに Wikipedia には次のように書かれています。

Swift(スウィフト)は、Apple の iOS / macOS / Linux / Windows で利用できるプログラミング言語である。

今回はそんな Swift を使って、競技プログラミングサイト AtCoder の問題を解きながら、基本的な文法・入出力・for文・if文などを一気に学べる内容をまとめました。
Swift に触れてみたい人や、アプリ開発へ一歩踏み出したい人にピッタリの内容です!

入出力・For文・IF文などの基本文法

まずは 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 の isMultiplewhile truea[i] /= 2 など、実務でも役立つ書き方が詰まった良問です。

まとめ

Swift を初めて触ってみて感じたのは、Python のように直感的で読みやすいのに、C言語のような高速性と厳密さも持っているということ。
特に isMultiple や範囲指定など、初心者にも優しい設計が印象的です。

iPhoneアプリ・macOSアプリを作りたい人はもちろん、文法を学ぶ手段として AtCoder を活用するのも非常におすすめです。
Swift の学習をぜひ楽しんでみてください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA