30
伸縮式括弧
正しくバランスの取れた括弧の空でない文字列を考えてみましょう: (()(()())()((())))(()) 括弧の各ペアは、折り畳まれた伸縮構造のリングを表すと想像できます。それでは、望遠鏡を拡張しましょう。 ( )( ) ()( )()( ) () ()() ( ) () 別の見方をすると、深さnの括弧は、水平位置を維持したまま行nに移動します。 あなたの仕事は、バランスの取れた括弧のような文字列を取り、拡張バージョンを作成することです。 プログラムまたは関数を記述し、STDIN(またはそれに最も近いもの)、コマンドライン引数または関数パラメーターを介して入力を取得し、STDOUT(または最も近いもの)、戻り値または関数(出力)パラメーターを介して出力を生成できます。 入力文字列が有効である、つまり、括弧のみで構成されており、それらが正しくバランスしていると想定できます。 各行に末尾のスペースを印刷できますが、必要以上の先行スペースは印刷できません。合計で、行は入力文字列の長さの2倍を超えてはなりません。オプションで、単一の末尾の改行を印刷できます。 例 上記の例に加えて、さらにいくつかのテストケースがあります(入力と出力は空の行で区切られています)。 () () (((()))) ( ) ( ) ( ) () ()(())((()))(())() ()( )( )( )() () ( ) () () ((()())()(()(())())) ( ) ( )()( ) ()() ()( )() …