2022年7月9日(土)開催 DDCC2022予選は終了しました。

title line


Q2

鯖。
鯖(サバ)は日本の食卓でもポピュラーな魚です。どんな調理方法でも美味しく頂けますが、小骨(こぼね)が多いことでも知られています。小骨を取り出す作業は、家庭ではもちろんのこと、食品工場などにおいてもほとんどの場合、人手で行っているそうです。そこで、あなたはこの作業を自動化して欲しい、という依頼がされました。"SABA"の中から"kobone"を全て取り除くのです。

1つ以上の"SABA"を含む文字列が与えられます。このうち、「"SABA"の中に完全に含まれている」"kobone"のみを全て取り除いてください。取り除いた後の文字列を回答してください。この問題では大文字と小文字は区別されます。

SABAの中にはkobone以外が含まれている場合がありますが取り除いてはいけません。また一つのSABAの外に一部でもはみ出しているkoboneも取り除いてはいけません。koboneは複数入っている場合があり、またSABAの中で分割されている場合があります。

SABAを構成する文字の候補が複数ある場合、先頭から優先してSABAと認識してください。

例)
SkoSAboneABA →SSAABA
(先頭のSからSABAと見なすため、koboneは正常に取り除かれた) SAkoboBAneBA →SAkoboBAneBA
(8文字目でSABAが認識されたため、はみ出したkoboneは取り除かれない)


同様に、koboneを構成する文字の候補が複数ある場合は先頭側から優先してkoboneと認識してください。

例)
koSAkobBoneA →koSAkobBoneA
(先頭のkoからkoboneを認識したため、SABAの手前にはみ出したkoboneは取り除かれない)


SABAは重なりません。SABAの中に含まれている文字は別の「SABA」の構成要素とすることは出来ません。同様にkoboneの中に含まれている文字は別の「kobone」の要素とすることは出来ません。

例)
SASABAkoboneBA→SASABAkoboneBA
(2回目に現れるSAは最初のSABAの中に含まれてしまっているため、koboneは取り除かれません)

例)
SkoAkobBoneboneA→SAkoBboneA
(一見するとkoboneが二つ出現しているがSの次のkoから優先してkoboneを取り除いたため、上記のように一つkoboneが残る)


3つの入力を文字列配列で用意しています。それぞれに対する答えを求め、カンマ区切りで答えて下さい。 文字列を出力する際は、入力と同様にダブルクォーテーション(")で囲ってください。


※入力データファイルをダウンロードして解答してください。
配点:200点

解答
"SABASAkkoBSkoSbAoneBASkokboABA","SABkoAboneSAKEBORASABSSAkoBbohireneASkobAobeBASASABAUNIBASABASAhaBrawataASAkoBbone","SABASAKESABSSABkoboAnekobonekoSboABnAeShiAreBASABSSABABORASABAgomiSASAkoBbAoneBA"

例題

例題
"SkoAboBneA",
"SkobAoneBASAKESABkoAboneSAkoboneMEkoSAboneBASAB",
"SAkoBbohoneneAumiSAkoboBAishikSoAkoboSAneUNIBAwakamekoboSneBAAkoBASbonekobonekoboneABASAkobone"
例題の解答
"SABA","SABASAKESABkoAboneSAMESABASAB","SABhoneAumiSAkoboBAishikSoAkoboSAneUNIBAwakamekoboSneBAAkoBASboneABASAkobone"
例題の解説
以下の赤い太字のkoboneが除去されます。
"SkoAboBneA"
"SkobAoneBASAKESABkoAboneSAkoboneMEkoSAboneBASAB"
"SAkoBbohoneneAumiSAkoboBAishikSoAkoboSAneUNIBAwakamekoboSneBAAkoBASbonekobonekoboneABASAkobone"
(例題の3件目、20文字目から始まるkoboneは2つのSABAの中に分かれているため、条件を満たさず、取り除かれません。)

↑TOP