1521

ある文字列を文字単位で圧縮することを考える。ある文字のバイナリ表現が他の文字のバイナリ表現の接頭辞にならないように割り当てるとき、何ビット必要か答えよ、という問題。


ハフマン木を作るだけの問題。PriorityQueueに各文字の出現回数を入れておいて、一番出てこない二つをマージしていく。マージする際に深さが一段増えるので、マージしたものの分だけ文字数を追加してやる。最初から1種類しか文字がないケースでうまくいかなかったり、alphanumericという単語の意味を把握していなかったり。