CodeIQ過去問集49:「2人組作って!」
本稿はCodeIQで2014年9月4日~2014年9月16日に出題された プログラミング言語★総選挙 予備選挙「2人組作って!」 という問題を再編集したものです。 ※出題時と記述が一部異なる場合がありますがご了承ください。
プログラミング言語★総選挙 予備選挙
【2人組作って!】
先生「はーい、それじゃあ今から2人組になってくださーい。」 と言われて、辛い思いをしなくても済むように、隣り合った人同士で、ペアを作りたいと思います。
このように、横に3人、縦に2人の合計6人いる場合、
のように、ペアを作ることができます。 ただし、
のようなペアの作り方では、左下の人と右上の人が離れてしまいますので、このようなペアの作り方は避けます。 そうすると、合計の人数が偶数であるかぎり、あぶれる人が出ることなく、かならずペアを作ることができます。
…が、現実はそれほど優しくはありません。欠席者がいるときもあります。
人数が奇数になってしまうと、どう頑張っても1人残ってしまいます。 逆に、元々奇数人の場合はうまくペアを作ることができる場合もあります。
ただし、欠席者の場所によってはうまくペアが作れない場合もあります。
【問題】
出欠情報が、標準入力からアルファベットの文字列で与えられます。 隣り合う人同士でペアを作り、出席者全員をペアにできる場合は「yes」、できない場合は「no」と出力するプログラムを書いてください。
◎出欠を表すアルファベットはすべて大文字で、出席の場合は"O"、欠席の場合は"X"とします。
◎アルファベットの並びは、必ず矩形(各行の文字数が等しい)で与えられます。また、矩形のタテの長さをH(≧1)、ヨコの長さをW(≧1)とすると、入力データは2≦H×W≦30の条件を満たしています。
◎欠席者は、0人または1人のみです。つまり、"X"は多くて1か所のみということになります。
【入出力例】
◎sample(1)
[input]
OOO OOX
[output]
no
◎sample(2)
[input]
OOO OOO OOX
[output]
yes
◎sample(3)
[input]
OOO OOO OXO
[output]
no
【提出方法】
本問はすでに終了した問題ですので、提出することはできません。個人で楽しみましょう。
※yosen.zipにテストデータがまとめてあります。