やるだけPython競プロ日誌

競プロの解説をPythonでやっていきます。できるだけ初心者に分かりやすいように『やるだけ』とかは言わないようにします。コメントについては必ず読んでいます。どんなに細かいことでもいいのでコメントくださればうれしいです。

Python

国会でも話に上がった "HASH" をPythonで -- hash()じゃないよ! --

以前、”国会にhash関数の話が出たwww”といって、そっちの界隈の人でちょっとした話題になっていました。では、hashとはなんなのか?分からない人もいると思います。それがわかっても、Pythonでの実装がわからない方もいらっしゃると思いますので、この記事を…

AtCoder に登録したら解くべき精選過去問 10 問 をPythonで解いてみた

0問目 PracticeA - はじめてのあっとこーだー(Welcome to AtCoder) 1問目 ABC086A - Product 2問目 ABC081A - Placing Marbles 3問目 ABC081B - Shift only 4問目 ABC087B - Coins 5問目 ABC083B - Some Sums 6問目 ABC088B - Card Game for Two 7問目 ABC…

Pythonでenumerateを賢く使う。

enumerateって? 英語で『数え上げる』という意味です。この関数の引数にイテレータを与えると、何回そのイテレータを呼び出したかを数える数と、そのイテレータ自身を返します。 例えば for i, j in enumerate(range(5, 0, -1)): print(i, j) """ 0 5 1 4 2…

Pythonの無名関数=(lambda)について

lambda 分かりにくいですよね笑私も理解するために少し時間がかかりました。簡単に言うと”” def せずに関数を定義する ””ものです。もし、あるイテレータ・構造の二番目を取り出す関数を作るには def getsecond(n): return n[1] とできますが、もっと短く ge…

ただの回数繰り返しだけじゃない! range()の賢い使用法

rangeって? 英語で範囲 を現します。Pythonでは、第一引数から第二引数まで、第三引数区切りで値を作ります。 え?引数を3つも取れるの? そう思った方のための記事となりますので、すでに知っていた方はブラウザバックしていただいても大丈夫です…。 引数…

数え上げに使えるcollections の Counter のお話

"collections" ライブラリの "Counter"。文字通り、数えるためにあります。『数え上げ?普通にfor文回せばいいじゃんアゼルバイジャン』という方もいらっしゃるでしょう。お前それ競プロの前でも言えんの? for + リストでの数え上げ defaultdict をつかう数…

Python における list の本質と 二次元配列 ( 多次元配列 ) のお話。

こんなページを見てくださっているような方々は分かり切っていることかもしれませんが、わたくしなりに考えてみたことです。ネットで、私の疑問に直接回答しているサイトは見当たりませんでしたので、ここに記します。茶番開始です() 配列の宣言 Pythonでリ…

PythonでAtCoder Beginner Contest 080 ABC080

AtCoder Beginner Contest 080 ABC080 2017/12/03 21:00 ~ 22:40の問題でした。 簡単に説明すると A:計算問題B:型変換多用C:bin換算D:重複計算 となります。 A : Parking 問題文 駐車場があり、以下の二種類のプランのどちらかを選んで駐車できます。 …

PythonでAtCoder Beginner Contest 079 ABC079

AtCoder Beginner Contest 079 ABC079 2017/11/19 21:00 ~ 22:40の問題でした。 簡単に説明すると A:orで3つをイコールB:リュカ数を求める(キャッシュが好ましい)C:3重ループD:ワーシャルフロイド となります。 A : Good Integer 問題文 1118 のような…

Python3 ~split関数について~

競技プログラミング(あるいはそれ以外でも)で使わない問題はないのではないと思うほど使用頻度の高いsplit()ですが、それを高度な使用をしようとしてできる人はあまり多くないのではないでしょうか。今回は、そんな愛されながらも謎に包まれたsplit()につ…

Python3 ~map関数について~

今回は map()関数 についてお話します。簡単に言うと、リストやタプルなどのシーケンスに対してmap(a, b) はbに対してaしたものを返す。ということです。たとえば def double(n): return (int(n) * 2) lis = ["114514", "810", "893"] print(list(map(double…

プログラミング(競プロ)に便利な Python3 用法集 ~入力編~

単純入力: n = input() 一番簡素な入力だと思います n = input() # 114514 print(n) # 114514 大切なことですがこのとき、nの中に入っているのは数としての“114514”ではなく、文字列(str)としての“114514”です。ですので、 n = input() # 114514 print(n * 2…

PythonでAtCoder Beginner Contest 078 ABC078

AtCoder Beginner Contest 078 ABC078 2017/11/11 21:00 ~ 22:40の問題でした。 簡単に説明すると A:文字同士の順序を求めるB:植木算(小学校でやるやつ)C:回数としての期待値の算出D:max計算でOK となります。 A:HEX 問題文 プログラミングでは 16進…