このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
電機メーカーがあなたに抵抗の色コードを解読するプログラムを書くように呼んだ。code[]という、抵抗に刻まれた3つの色帯が文字列型配列として与えられる。その抵抗が表す抵抗値(オーム)を返せ。最初の2つの色が値を、最後の1つの色が先頭2つの値に対して掛ける値を示している。
例えば、code[]={"red","brown","red"};であれば、返すべき抵抗値は21*10^2=2100になる。
抵抗に用いる色については一般的な抵抗と同じである。例えば、こちらを参考されたい。
私の解答はこちら。
public class ColorCode {
public long getOhms(String[] code) {
String[] color = {"black","brown","red","orange","yellow",
"green","blue","violet","grey","white"};
int val = 0;
for( int i=0 ; i<2 ; i++ ){
for( int j=0 ; j<color.length ; j++){
if( code[i].equals(color[j]) ){
val = val*10 + j;
break;
}
}
}
int p = 0;
for( int i=0 ; i<color.length ; i++ ){
if( code[2].equals(color[i])){
p = i;
break;
}
}
return (long)(val*Math.pow(10,p));
}
}得点は181.20/250、中央値は約195点。方針を立てるのは容易でしたが、とんでもない勘違いで、大幅にタイムロスしてしまいました。
0 件のコメント:
コメントを投稿