アルゴリズム勉強会 |
この勉強会はアルゴリズムを考えるのに頭を使い、毎回参加するごとに頭が賢くなった気がします。
この勉強会のおかげでiterative DPの書き方が分かるようになったり、ビット演算の活用、いもす法 などのことを知ることができて毎回自分の大きな成長になっています!
前回はチーム戦を行いました。イリノイ大学からの留学生Mr.Marcoとチームを組みました。主に2つの問題が出題されました。1回目のときは僕がドライバー、Marcoがハンドラー(アルゴリズムを考える人)でした。Marcoの考えたアルゴリズムを使いました。ですが見落としていた状態があったので全状態を列挙するため僕はスパゲッティコードで実装してしまいました。2つの論理テーブルと1つの得点テーブルを用意してこの問題を解きました。ビット演算を使うと3つのテーブルが1つに抑えられ、if文の連続も抑えられることが判明しました。
2回目は僕がハンドラー、Marcoがドライバーでした。2分探索をして答えにたどりついたとき探索した回数を返せば良いと気付き、それはlog2n + 1なので2分探索もする必要がないと気づきました。MarcoはJavaプログラマなのですが、javaではlogの底は常用対数である10であり、工夫点としては変換公式を使う必要があったくらいです。2問目はMarcoのファインプレーによりチーム戦で良い成績が出て、2人プログラミングの楽しさを初めて知りました。
次回のアルゴリズム勉強会が楽しみです。
0 件のコメント:
コメントを投稿