この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 件のコメント:
コメントを投稿