for study - 明解Javaによるアルゴリズムとデータ構造