0.はじめに
最近毎週レギュラーが開催されるようになり、みるみるランクが下がるように・・・。
1問必解を目指しています。
1.A - Equal Hamming Distances
久々に2時間フルに取り組みましたが、回答できませんでした。
その後リベンジし、AC頂きました。
回答の考え方
1)すべて0の文字列と比較した場合の
S列とT列それぞれのハミング数を取得
1-1)SとTのハミング数が同じ→ALL0が正解
1-2)SとTのハミング数を足すと奇数→解なし(-1)
1-3)2へ
2)S列T列を右(添え字j)からチェックしていく
回答文字列”Ans”の初期値はALL”0”
2-1)S[j]==T[j]の時
Continue
2-2)Sのハミング数が大きくかつ、S[j]が”1”の時
Ans[j]に1をセット
Sのハミング数から1を引き、Tのハミング数に1を足す
2-3)Tのハミング数が大きい場合かつ、T[j]が1の時
Ans[j]に1をセット
Tのハミング数から1を引き、Sのハミング数に1を足す
2-4)SとTのハミング数が同じ場合ループ終了
そうでない場合は、j+1
3)Ansを連結して表示。
上記を実装するも、本番の時には、1)の処理でハミング数を配列にして
セットしたりと迷走し、正しい答えが導き出せず。
数日後、落ち着いて実装&テストしたところすんなりクリアできました・・・。