このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文についておおまかに説明する。
柱状図(訳注:棒グラフと思って差し支え無いです)とは水平方向にn個の柱が配置されたものである。各柱は幅が1であり、各柱はx軸にくっついている。柱の高さはa[]という整数型の配列で与えられる。a[i]はi番目の柱の高さを表している(訳注:より詳しくはリンク先の画像をご確認ください。隣合う柱はくっついている図です)。与えられた柱状図の周囲の長さを返すメソッドを作成せよ。なお、a[i]は1以上50以下の整数になるものとする。例えば、aが{3, 2, 1}であれば、x軸に水平な方向の周囲の長さは柱の上側、下側を合わせて3*2=6、側面の長さは左から順に3+1+1+1で合計6なので、それらを合わせて12になる。
私の解答はこちら。
public class ColumnDiagramPerimeter { public int getPerimiter(int[] a) { int perimiter = 0; int prev = 0; for( int i=0 ; i<a.length ; i++ ){ perimiter += Math.abs(a[i] - prev); prev = a[i]; } perimiter += (a[a.length-1] + a.length * 2); return perimiter; } }
得点は207.19、2回目のsubmitでシステムテストクリア。途中で提出のページに接続できなくなり、提出が遅れたのが残念。
0 件のコメント:
コメントを投稿