AtCoderで役立つ記事一覧(Python, Go言語)
主にAtCoderに関連したPython, Go言語の記事の一覧です。初心者向けのチートシートなどもありますので参考にしてください(言語に関連する記事も「基本」に入れています)
⭐︎のある項目は、よく使われるものです
※のある項目は、通常のコンテストでは使わないものです
一般
考え方
解法がまったく思いつかない場合は、以下の記事を眺めてみましょう
AtCoderのABCで詰まった時の思考(解法)のヒント(助け)⭐︎
その他
コード支援ツール
無料で使えるコード生成AI「Codeium」をVSCodeで使う方法
※Atcoderでは、生成AIの使用についてルールがあります。ルールに気をつけて利用しましょう。
Python
基本
Pythonで文字列を分割・結合する—split()とjoin()の使い方ガイド⭐︎
Pythonのforループを攻略する|range, enumerate, zipの使い方ガイド⭐︎
Pythonのソートパターンを徹底解説!任意の条件でデータをソートする方法⭐︎
コードがシンプルに!Pythonの内包表記の使い方を解説⭐︎
Pythonの可変長引数*argsと*kwargsの使い方と違いを分かりやすく解説※
Pythonの型ヒントを使った型宣言パターン(変数、関数、独自型、numpy…)※
Python|argparseでコマンドライン引数を取得する方法※
キュー・再帰・その他注意点
Python初心者がAtCoderでハマりがちなポイント解説(キュー処理・再帰処理など)⭐︎
リストと集合で大きく違う!”if A in B”の処理速度の罠|Python
色々なアルゴリズムの実装(データ構造など)
SortedSet, SortedList, SortedDict
AtCoderで使えるPythonのSortedSet, SortedDictを解説
UnionFind(DSU)
Python|UnionFind(DSU)クラスの実装と利用方法⭐︎
BIT(Fenwick Tree)
Binary Indexed Tree(Fenwick Tree)を実装する|Python⭐︎
行列累乗
行列の累乗を繰り返し二乗法で高速計算する方法(Python)⭐︎
グラフ(DFS,BSF、ダイクストラ法)
Pythonで深さ優先探索(DFS),幅優先探索(BFS),ダイクストラ法を実装する⭐︎
A*アルゴリズムで効率的に最短経路を探索|Pythonによる実装例※
グラフ(ワーシャル・フロイド法)
N=300くらいまでの最短経路探索に使える手法
3重ループで最短経路を探索する方法(ワーシャルフロイド法)をPythonで実装する
(文字列)部分文字列の一致を調べる(文字列の更新付き)
【Python】ローリングハッシュをセグメント木に載せる|部分文字列の一致を高速にチェック
(グラフ)始点と終点の双方から幅優先探索を行う(演算量削減)
両端からの幅優先探索(BFS)で演算量を削減する高速化テクニック
(文字列)LIS(最長増加部分列)と再構成
Python|最長増加部分列(LIS)を求める方法とその1つを構成する方法⭐︎
(グラフ)木の重心を求める
木構造のグラフの重心を簡単に求める方法|Pythonによるアルゴリズム解説⭐︎
色々なアルゴリズムの実装(テクニック)
(組み合せ)MOD付き組み合わせ数 nCk
PythonでMOD付きnCk(組み合わせ数)を求める方法⭐︎
(幾何)図形(線分と点の最短距離)
拡張ユークリッドの互除法の応用例
拡張ユークリッドの互除法の応用例を解説【Python/Go】⭐︎
(数列)式変形して解く
(数列)数列の差(or 差の絶対値)の総和、区間最大和
数列問題:差の総和や区間最大和の解き方まとめ|Python⭐︎
鳩の巣原理
鳩の巣原理とは?アルゴリズム検定問題の具体例を使って解説⭐︎
モンテカルロ法
3000万の資産で何年暮らせるかを、モンテカルロ法で求めてみる【Python】※
ビットカウント
2進数の1が立っているビットを高速にカウントする方法|Python
パリティチェック
数列問題
数列問題|要素2つの合計が一定値以上になる組み合わせを高速に求める方法⭐︎
その他
(ゲーム)min-max法を用いた対戦プログラム
コンピュータと対戦できる!3目並べ(tic-toc-toe)をPythonで実装してみよう
ユニットテスト
PythonのUnittestを使ったテストコードの書き方とリファクタリングの実践ガイド※
Go言語
基本
Go言語でAtCoder参加時のテンプレートと注意すべきポイント⭐︎
Go言語のsortアレコレ!ソートの基本からスライスを自在に並べ替える方法を解説⭐︎
Go言語のジェネリクスの使い方をQueueとSetの実装を例に解説
Go言語のfor~rangeの注意点(ポインタ参照について)⭐︎
Go言語でフォルダ内のローカルパッケージをインポートする手順を解説※
ゴルーチンとチャネル
Go言語のチャネルの基本と注意点|ゴルーチンでデータを送受信する方法※
ゴルーチン(goroutine)とチャネルを使った並行処理の実践例|Go言語法※
ゴルーチン(goroutine)とチャネルを使った並行処理の記述方法いろいろ|Go言語※
キューなどの実装方法
Go言語でAtCoder|スタック、キュー、 優先キューの実装方法⭐︎
(stack, queue, priority queueの書き方)
ヒープと優先キューの作り方をGolangで学ぼう|ジェネリクス対応版
Go言語で予約キャンセル機能付きのキューを実装する(ジェネリクス対応版)
MOD付き演算
AtCoderのためのGo言語用mod付き計算ライブラリ|実装と活用方法⭐︎
64bitを超える整数を扱う
Goで64bitを超えるの多倍長整数を扱う方法【big.Int解説】
色々なアルゴリズムの実装
最大公約数(GCD)
UnionFind
Go言語でUnionFind(DSU)を実装|データ構造とアルゴリズム⭐︎
順列列挙と組み合わせ列挙
Go言語で順列列挙と組み合わせ列挙を実装する(NextPermutation, Combinations)⭐︎
図形(線分の交差判定)
Go言語の ゴルーチンとチャネルでfor~rangeによる繰り返しを実現する方法
https://tech.aru-zakki.com/golang-for-generator/⭐︎
Go言語でC++のlower_bound, upper_boundを実装する
https://tech.aru-zakki.com/lowerbound-upperbound-for-golang/⭐︎
ヒューリスティックコンテスト関連
rand.Seedが非推奨になったGo1.20以降の乱数シードの設定方法※
その他
GoSTL
AtCoderで使えるC++STLライクなライブラリ「GoSTL」を紹介⭐︎
min-max法を用いた対戦プログラム
コンピュータと対戦できる!3目並べ(tic-toc-toe)をGo言語で実装してみよう
Web APIサーバーを作成する
Go言語でWeb APIサーバーを構築|echoで手軽に実装してみる※