このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
タロウはカラフルなもの、特にカラフルなタイルが好きである。タロウの部屋は連続したL個のタイルで区切られている。各タイルは以下の4つの色の1つである:赤、緑、青、黄。roomという文字列が与えられ、各部屋のi番目の文字はR、G、BまたはYで現され、それぞれ赤、緑、青、黄を表している。タロウは隣り合う部屋の色が同じにならないように部屋の色を変えることにした。変えなければならないタイルの数の最小値を返せ。
私の解答はこちら。
public class ColorfulTilesEasy { public int theMin(String room) { int nChange = 0; char[] roomchars = room.toCharArray(); char prevColor = 'X'; for( int i=0 ; i<room.length() ; i++ ){ char curColor = room.charAt(i); if( curColor == prevColor ){ nChange++; roomchars[i] = 'X'; } prevColor = roomchars[i]; } return nChange; } }
得点は243.22/250、1回のsubmitでシステムテストクリア。1文字ごとに分解してしまえばしめたものです。
0 件のコメント:
コメントを投稿