このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文について意訳で説明する。
ファイルシステムには、使用したディスク容量がかならずしもファイルサイズに一致しないことがある。これはディスクが等しいサイズのクラスタに分けられており、各クラスタは1つのファイルしか利用できないためである。例えば、クラスタサイズが512バイトの場合、ファイルが600バイトであれば、2つのクラスタでファイルを保存することになる。これら2つのクラスタは他のファイルと領域を分け合うことはなく、全体として1024バイトのディスク容量を使用することになる。sizes[]という1つのファイルサイズを表す整数型配列と、clusterSizeというファイルシステムのクラスタサイズが与えられたとき、与えられたファイルで使用することになるディスク容量の合計値を返すメソッドを作成せよ。
私の解答はこちら。
public class TrueSpace { public long calculateSpace(int[] sizes, int clusterSize) { long nSpace = 0; for( int i=0 ; i<sizes.length ; i++ ){ long spaceNeeded = (int)Math.ceil(sizes[i]*1.0/clusterSize); nSpace += spaceNeeded; } return nSpace*clusterSize; } }
得点は246.05/250、1回のsubmitでシステムテストクリア。
0 件のコメント:
コメントを投稿