📝

[AtCoder]Python始めてみた

2022/12/13に公開

定年がだいぶ間近に見えてきた今日この頃、劣化していく脳に刺激を与えようかと思ってPythonを始めてみようと思い立ちました。

きっかけ

会社の開発環境でちょっとしたツールが必要になった時、今までは**C#**でコマンドライン用のプログラムを作っていましたが、これだとちょっとした修正をするのにもコンパイルし直さないといけないので、もっと簡単に済ませるにはスクリプト系の言語でも使った方が早いのではないかと考えたのが今回のきっかけです。

どうせならやったことがない言語の方が楽しいかなと最近巷でよく見かけるようになったPythonを選択してみました。

何をするのか

とりあえずAtCoderの簡単な問題でも解きながら少しずつ学んでいければよいかなと思っています。まずはABC(AtCoder Beginner Contest)の過去問題をやっていこうと考えているのですが、開催回のすべての設問をクリアしていくというよりは難易度の低い方からなめていく感じで周回していこうと考えています。

仕事でガッツリ使うとか競技プログラミングにチャレンジとかではなく、あくまで趣味で使う程度なものなのでそれくらいの意気込みでちょうどいいのではないでしょうか。

なお、解答した結果については、正直ニーズはないと思いますがA・Bあたりの問題であってもここに上げていこうと思います。

準備

先人たちがいろいろな情報を公開してくれているので自分でやったことはとくに何もありませんが、解答するにあたりVS Codeのスニペットを作成してみました。

作成したスニペット

{
    "def main": {
        "prefix": ":main",
        "body": [
            "def main():",
            "",
            "if __name__ == \"__main__\":",
            "    main()",
        ],
    },
    "def getString": {
        "prefix": ":gs",
        "body": [
            "def getString():",
            "    return input()",
            "",
            "",
        ],
    },
    "def getInt": {
        "prefix": ":gi",
        "body": [
            "def getInt():",
            "    return int(input())",
            "",
            "",
        ],
    },
    "def getFloat": {
        "prefix": ":gf",
        "body": [
            "def getFloat():",
            "    return float(input())",
            "",
            "",
        ],
    },
    "def getStringMap": {
        "prefix": ":gsm",
        "body": [
            "def getStringMap():",
            "    return input().split()",
            "",
            "",
        ],
    },
    "def getIntMap": {
        "prefix": ":gim",
        "body": [
            "def getIntMap():",
            "    return map(int, input().split())",
            "",
            "",
        ],
    },
    "def getFloatMap": {
        "prefix": ":gfm",
        "body": [
            "def getFloatMap():",
            "    return map(float, input().split())",
            "",
            "",
        ],
    },
    "def getStringList": {
        "prefix": ":gsl",
        "body": [
            "def getStringList():",
            "    return list(input().split())",
            "",
            "",
        ],
    },
    "def getIntList": {
        "prefix": ":gil",
        "body": [
            "def getIntList():",
            "    return list(map(int, input().split()))",
            "",
            "",
        ],
    },
    "def getFloatList": {
        "prefix": ":gfl",
        "body": [
            "def getFloatList():",
            "    return list(map(float, input().split()))",
            "",
            "",
        ],
    },
    "def getStringRow": {
        "prefix": ":gsr",
        "body": [
            "def getStringRow(N):",
            "    return [input() for _ in range(N)]",
            "",
            "",
        ],
    },
    "def getIntRow": {
        "prefix": ":gir",
        "body": [
            "def getIntRow(N):",
            "    return [int(input()) for _ in range(N)]",
            "",
            "",
        ],
    },
    "def getFloatRow": {
        "prefix": ":gfr",
        "body": [
            "def getFloatRow(N):",
            "    return [float(input()) for _ in range(N)]",
            "",
            "",
        ],
    },
    "def getStringListRow": {
        "prefix": ":gslr",
        "body": [
            "def getStringListRow(N):",
            "    return [list(input().split()) for _ in range(N)]",
            "",
            "",
        ],
    },
    "def getIntListRow": {
        "prefix": ":gilr",
        "body": [
            "def getIntListRow(N):",
            "    return [list(map(int, input().split())) for _ in range(N)]",
            "",
            "",
        ],
    },
    "def getFloatListRow": {
        "prefix": ":gflr",
        "body": [
            "def getFloatListRow(N):",
            "    return [list(map(float, input().split())) for _ in range(N)]",
            "",
            "",
        ],
    },
}

おわりに

公に「始める宣言」をしてしまえばさすがにやらざるを得ないだろうと意気込んでこの記事を書いてみました。

当初はAtCoderの解答を記事にしていくくらいですが、ゆくゆくはそれ以外の記事も書けるようになればいいかなと思っています。

Discussion