BETA

PythonでAtCoderのABC解けるようになりたい

投稿日:2020-06-04
最終更新:2020-06-04

※AtCoderを初心者の私がPythonでかなり低みから頑張ってるだけの日記です。役立つ情報とかはないです。ごめんね。

AtCoderというプログラミングコンテストがある。コンテストの種類はビギナー向けや上級者向けなど幅広い人向けになっており、どのコンテストも制限時間以内に問題の条件を満たすコードを書くもので、偏見だがIQ800のような人がごろごろいる気がする

過去のコンテストの問題は有志による『AtCoder Problems』にまとめられており、いつでも解けるようになっている。答えも提出できるし、他人が書いたコードも見ることができる。

この過去問を私は解いているわけだが、例えるなら『Aは一味唐辛子、Bはタバスコ、Cはデスソース、それ以上は死あるのみ』である。AtCoder Problemsは正解した問題は緑色になるため、全部正解したいのだがB問題ですらえぐく感じる(ほんまにビギナーコンテストなんかこれ)。とりあえずABCのA問題をひたすら解いて、それだけでもコンプリートしたい。

入力受け取りのやり方から

問題は入力を受け取り、それをあれやこれやして答えを出力し、正解を目指す。しかし、Pythonの知識がなかった私はまず受け取り方を調べた。

A = input()  

こうすると、入力したものをAに代入できる。しかし、数値として扱いたい場合、文字型として代入するのでこのままAで計算しようとするとエラーが起きてしまう。そこで、

Moji  = input()  
Suuti = int(Moji)  

と数値型に変換していたのだが、他人のコードを見たところ

Suuti = int(input())  

と略せることが分かった。
ここまでは文字が1つだけだったが、2つ以上受け取る問題もある。調べたところ、

A,B = input().split()  

区切り文字を指定するsplit()に何も入れなければ、空白で区切ってくれて代入できる。これは文字型の場合だが、数値型で代入できる方法に、

A,B = map(int,input().split())  

謎のmap出てきた。mapは調べてもよく分からなかったので、今は2つ以上の数値型に対して使うんだな~程度の認識でいる。

受け取った後

受け取った後は条件に合うようにコードを書いて

print()  

で出力すれば勝ちである。
出力するものはA問題はシンプルな『A * B』などの計算をするだけの問題から、『listをうまく活用する』『if ~ elif ~ elseの比較』など、幅広くある。問題が数学になっていることもあり、『実は計算量を減らす方法があります!』に気づけずすんごい長いコードを書くこともある。ビギナーのA問題はこういう冗長コードを書かないようにするための力と、言語ごとのコードを書けるようになる基礎を多分鍛えてくれている。あと半分以上残っているA問題も頑張りたい(あわよくばBもチャレンジしていきたい)。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

tnodino(つのでぃの)のブログ。日頃の内容を記事にしています。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう