LoginSignup
2
1

More than 5 years have passed since last update.

paizaの問題をSwiftでやってみた時に躓いたこと

Posted at

【経緯】

社内もくもく会にてSwiftを行ってました。今まではProgateさんでもくもくしていましたが、問題をやり切ってしまったのでpaizaさんの問題で基礎構文の再確認を行ってました。
その中で、幾つか躓いたポイントがあったので記載しておきます。

【1. readLine()の扱い】

競技プログラミングやこういうオンラインでの問題系を全然やってこなかったので、そもそもreadLine()の扱いから躓きました。
値出力・取得サンプルコードのページはあるんですが、Swiftのサンプルは無かったので他言語のサンプルとにらめっこしたり検索しながら四苦八苦するはめに。

while let str: String = readLine() {
    print(str)
}

【参考】

https://www.aipacommander.com/entry/2015/12/23/154814
http://itnewbie.hatenablog.com/entry/2017/09/07/200451
https://qiita.com/hirothings/items/9e2d184349c7650d8bbe

【2. 文字列分割】

paizaはSwift3なので、String.components(separatedBy:)を使用するとのこと。
が、こういう0ベースからのプログラミングをやってないから「import Foundation」の記述を忘れてエラーと戦ってました。
stackoverflowでドンピシャの記事を見つけて、「確かに・・・」ってなりました。

import Foundation

【参考】

http://itnewbie.hatenablog.com/entry/2017/09/07/200451
https://qiita.com/keizokeizo3/items/e488869a175371188a73
https://stackoverflow.com/questions/43642506/swift-3-string-has-no-member-components?noredirect=1&lq=1

【3. ログを改行しない(結局使わなかったので豆知識的に)】

print("My name is swift.", terminator: "")

// 実行結果 : "My name is swift."

【参考】

https://egg-is-world.com/2015/11/26/swift2-print-newline/

【4. C言語スタイルforループについて】

手癖でどうしても書いちゃうC言語スタイルの話があったので

for i in (0 ..< 100) {
    print("\(i)")
}

【参考】

https://qiita.com/codelynx/items/899c26dd2cbdba7d2b00

【所感】

やっぱりまだ手が自動で動くレベルでは実装出来ないなーという感じです。調べながらやっていって何とか記載できる感じ。
とはいえランク低いのばっかりやっていたので、ロジック自体に悩むことは無く、ほぼ検索とトライ&エラーの繰り返しだけで回答出来たので問題の回答時間自体は短くてすみました。
こういうのを何度もやっていくと身につくんだろうなと思いますが、いかんせん触る機会がない・・・。。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1