SRM581 Div2 Easy "BlackAndWhiteSolitaire"
問題
http://community.topcoder.com/stat?c=problem_statement&pm=12589
訳
マナオは順番に配置されたN枚のカードを持っている。彼は左から右へと向かって0~N-1と番号を振った。各カードは一面が黒で、その裏は白となっている。初め、面がバラバラに配置されている。いくつかのカードを(まったく選ばなくてもよいし、全て選んでもよい)黒に、または白にひっくり返す。マナオは黒と白が交互になるようにしたい。
あなたはN個の文字で構成された、String cardFrontが与えられる。各iで、i番目のカードが黒であったら、cardFrontのi番目の文字が'B'であるし、そうでなければ'W'となっている。黒と白が交互に並ぶようにするために、ひっくり返さなければならない最小のカードの枚数を返せ。
制約
3 <= N <= 50
考えた事
BWBWBWBW...
WBWBWBWB...
両方試す
ソースコード
class BlackAndWhiteSolitaire { public: int minimumTurns(string cardFront){ int n = cardFront.length(); int cnt1 = 0; for( int i = 0; i < n; i++ ){ char need = i % 2 ? 'W' : 'B'; if( need != cardFront[i] ) cnt1++; } int cnt2 = 0; for( int i = 0; i < n; i++ ){ char need = i % 2 ? 'B' : 'W'; if( need != cardFront[i] ) cnt2++; } return min( cnt1, cnt2 ); } }