Topcoder SRM 517 div2 easy "MonochromaticBoard"
白黒で埋められた長方形のボードが与えられる.1行または1列の色をいっきに塗り替える処理を一回と数えるときにボードを全部白に塗り替えるために必要な最小回数を求める.
単に行または列の黒を数える.行と列の処理を行う問題で以前引っかかったことがあるので注意深く実装z
public class MonochromaticBoard { public int theMin(String[] board) { int n = board.length, m = board[0].length(); int colmin = Integer.MAX_VALUE; for(int i = 0; i < n; ++i){ int sum = 0; for(int j = 0; j < m; ++j){ if(board[i].charAt(j)=='B'){ ++sum; } } colmin = Math.min(colmin, sum); } int rowmin = Integer.MAX_VALUE; for(int j = 0; j < m; ++j){ int sum = 0; for(int i = 0; i < n; ++i){ if(board[i].charAt(j)=='B'){ ++sum; } } rowmin = Math.min(rowmin, sum); } return rowmin != n && colmin != m ? rowmin + colmin : Math.min(n, m); } }