Atcoder Beginners Selection コード解説[1]
記事の目的
初投稿です。
Atcoderを始めた人がまず最初に取り組む課題である「Atcoder Beginners Selection」を解き終えたのでまとめます。(正直n番煎じですが…)
ここをこうするとより良いよ!!みたいなコメントはいつでも大歓迎です!
Atcoder Bigenners Selectionって?
プログラミングサイトAtcoderが提供する、いわば初心者向けの教材です。
主要な言語なら基本的になんでも使えるので、登録して一番初めにやってみましょう。プログラミングの勉強を始めたての人でも簡単に解けるA問題から、解くのに慣れが必要なB問題、数学的な考え方が必要なC問題の良問がピックアップされています。
参加は上の画像の左上からできます。
本記事ではA問題を見ていきましょう。なお、A問題は3問ありますが、「PracticeA - Welcome to AtCoder」は割愛します。また、実装はPythonで行っています。
ABC0086A - Product
問題文
シカのAtCoDeerくんは二つの正整数 a,b を見つけました。 a と b の積が偶数か奇数か判定してください。偶数ならEven
、奇数ならOdd
と出力してください。
いわゆるFizzBuzz問題ってやつですね。問題の解法よりAtCoDeerくんの方が気になるかもしれません…。AtCoDeerくんは他の問題にも登場するので長い付き合いになりそうですね。
a, b = map(int, input().split()) if a*b %2 == 0: print("Even") else: print("Odd")
Atcoderでは入力はすべてinput()
で受け取ります。入力はすべて文字列型ですから、受け取った後に数値型に変換する必要があります。一行目のコードは受け取ってから数値型に変換するまでを行っています。(入力が数行にわたる場合は行の数だけinput()
をする必要があります。)
数値型で受け取った後は、「aとbの積が偶数か奇数かを判定」して、結果を出力するだけです。基本的には2で割った余りが0か1かで判定します。
ABC081A - Placing Marbles
問題文
すぬけ君は 1,2,3 の番号がついた 3 つのマスからなるマス目を持っています。 各マスには 0 か 1 が書かれており、マス i には siが書かれています。 すぬけ君は 1 が書かれたマスにビー玉を置きます。 ビー玉が置かれるマスがいくつあるか求めてください。
この問題は文字列が与えられて、その中の1の個数をカウントするというものですね。A問題はfor文が無くても解けるようにできてるらしいのですが、これも3桁の数字を調べて1の個数をカウントすればよさそうですね。
input = list(input()) cnt = 0 for i in input: if i == "1": cnt += 1 print(cnt)
pythonはlist(文字列)
で文字を1文字ずつリストに格納できるので、簡単に実装できました。正直for文を使わなくても3桁程度ならよさそうですね。
おわりに
はてなブログを開設したので練習がてら執筆してみました。これからも自分のモチベーション維持のため、定期的に更新していきたいと思います。とりあえず上位50%くらいの茶色を目指していきます!