TopCoder SRM581: BlackAndWhiteSolitaire
"BWBW..." と "WBWB..." の2通りとの差分の最小値を出せばよい。
public class BlackAndWhiteSolitaire { public int minimumTurns(string cardFront) { int cost = cardFront.Select((c, index) => (c == 'B' ^ (index % 2 == 0)) ? 1 : 0).Sum(); return Math.Min(cost, cardFront.Length - cost); }