二分探索とSet 辞書順に並べた後に配列の中に完全に一致するものが存在するかどうかをチェックするのは二分探索ではなくSetで十分 remainの計算方法 # 下の方がわかりやすい remain = S.inject(16){|r,i| r - i.length} - (N - 1) remain = 16 - S.map(&:length).sum - (N - 1) チェックする再帰問題 フィボナッチ数みたいに漸化式を出すのではなく、D問題のような条件を満たすまでチェックしていく再帰関数に慣れていない