WARush

SRMの結果とか、解けた問題のコードを書いていきます

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 );
    }
}