Upgrade to Pro — share decks privately, control downloads, hide ads and more …

chibaswift_canacel.pdf

Avatar for canacel canacel
December 06, 2024
0

 chibaswift_canacel.pdf

Avatar for canacel

canacel

December 06, 2024
Tweet

Transcript

  1. AtCoder は Swift に対応している • Swift 5.8.1 (Xcode 14.3.1) •

    Swift-Algorithms, Swift-Collections 使用可能
  2. 便利なツールもある • Apple公式ライブラリ • apple/swift-algorithms : SequenceとCollectionのアルゴリズム • apple/swift-collections :

    データ構造の実装用 • 非公式 • koher/swift-atcoder-support : 便利コピペ集 • ShotaKashihara/atcoder-cli-swift : コンテスト用CLIツール
  3. • 競プロ: 時間とメモリの制限がシビア・正解すればOK • 仕事: 可読性・保守性・拡張性が求められる ② 競プロのコードと仕事のコードは全然違う if N

    % 2 == 0 { print("No") } else if N == 1 && S == "/" { print("Yes") } else { let s = S.split(separator: "/").map { String($0) } if s.count != 2 { print("No") } else if s[0].contains("2") { print("No") } else if s[1].contains("1") { print("No") } else if s[0].count == s[1].count { print("Yes") } else { print("No") } } ABC 381 B問題の解答例
  4. ③ 計算量を意識する必要がある • 以下のコードの計算量は O (NM) • 例えば N や

    M が 2x10^5 の場合、O (NM) = 400億 • 家庭用 PC の計算速度は毎秒 10 億回程度*であり、このコードは 明らかに時間がかかりすぎている for n in N { for m in M { // N΍M͕େ͖͍ͱͱͯ΋͕͔͔࣌ؒΔΑ } } * 米田 優峻. 競技プログラミングの鉄則 ~アルゴリズム力と思考力を高める77の技術~. 2022. p24.
  5. 競プロを通して得られたもの • 楽しさ • 仕事じゃないプログラミングは楽しい!✨ • 計算量を気にする心 • enumerated() は

    O(1)! • Swiftの言語仕様を気にする心 • zip() や enumerated() の中身はどうなってるんだろう?と調べたり… • Swiftへの興味・関心の向上につながっていると思う