赤か緑で塗られた列が与えられる.この列を前半分を赤,後半分を緑となるように塗り替える.このとき,塗り替える場所が最小となるようにした場合の回数を求める.
ある地点までを赤で塗ると仮定した場合にそこまでの緑の個数及びそこからの赤の個数を計算する.
public class RedAndGreen { public int minPaints(String row) { int n = row.length(), min = Integer.MAX_VALUE; for(int i = -1; i < n + 1; ++i){ int r = 0; for(int j = 0; j < n; ++j){ if(row.charAt(j) == (i < j ? 'R' : 'G')){ ++r; } } min = Math.min(min, r); } return min; } }