おじい研究所

主にプログラミングの話題です

CodeIQ過去問集50:「2人組を作って!〜欠席多くても頑張る編〜」

本稿はCodeIQで2014年9月18日~2014年9月24日に出題された プログラミング言語★総選挙 本選挙「2人組を作って!〜欠席多くても頑張る編〜」 という問題を再編集したものです。 ※出題時と記述が一部異なる場合がありますがご了承ください。

プログラミング言語★総選挙 本選挙

【2人組を作って!〜欠席多くても頑張る編〜】

先生「はーい、それじゃあ今から2人組になってくださーい」 と言われて、辛い思いをしなくても済むように、隣り合った人同士で、ペアを作りたいと思います。

f:id:Ozy:20180428154738p:plain

このように、横に3人、縦に2人の合計6人いる場合、

f:id:Ozy:20180428154735p:plain

f:id:Ozy:20180428154732p:plain

f:id:Ozy:20180428154728p:plain

のように、ペアを作ることができます。 ただし、

f:id:Ozy:20180428154724p:plain

のようなペアの作り方では、左下の人と右上の人が離れてしまいますので、このようなペアの作り方は避けます。 そうすると、合計の人数が偶数であるかぎり、あぶれる人が出ることなく、かならずペアを作ることができます。

…が、現実はそれほど優しくはありません。欠席者がいるときもあります。

f:id:Ozy:20180428154832p:plain

人数が奇数になってしまうと、どう頑張っても1人残ってしまいます。 逆に、元々奇数人の場合はうまくペアを作ることができる場合もあります。

f:id:Ozy:20180428154829p:plain

ただし、欠席者の場所によってはうまくペアが作れない場合もあります。

f:id:Ozy:20180428154826p:plain

欠席者が多数いた場合でも、とにかく出席者だけでペアを作ります。

f:id:Ozy:20180430153054p:plain

f:id:Ozy:20180430153051p:plain

上記の場合はうまくペアを作ることができますが、次の場合はペアを作ることができません。

f:id:Ozy:20180430153048p:plain

【問題】

出欠情報が、標準入力からアルファベットの文字列で与えられます。 隣り合う人同士でペアを作り、出席者全員をペアにできる場合は「yes」、できない場合は「no」と出力するプログラムを書いてください。

  • ◎出欠を表すアルファベットはすべて大文字で、出席の場合は”O”、欠席の場合は”X”とします。

  • ◎アルファベットの並びは、必ず矩形(各行の文字数が等しい)で与えられます。また、矩形のタテの長さをH、ヨコの長さをWとすると、入力データの範囲は1≦H≦10、1≦W≦10とします。

  • ◎欠席者の数には制限がありません。つまり、全員欠席の場合もあり得ます。 全員欠席の場合は、「no」と出力してください。

【入出力例】

◎sample(1)

[input]

OOO
OOX

[output]

no

◎sample(2)

[input]

OOO
OOO
OOX

[output]

yes

◎sample(3)

[input]

OOO
OOO
OXO

[output]

no

◎sample(4)

[input]

XXX
XOO
XXX

[output]

yes

【提出方法】

本問はすでに終了した問題ですので、提出することはできません。個人で楽しみましょう。

honsen.zipにテストデータがまとめてあります。

[【解説】]


こっちは古い版