データは1から100ですから、数字が出た回数を記録する100個の配列を作成しましょう。
(配列の添字が0からにしかできない言語は、注意しましょう)
入力データが1〜3と仮定した例を示します。
[1] | [2] | [3] |
0 | 0 | 0 |
[1]をひとつ増やしましょう。
[1] | [2] | [3] |
1 | 0 | 0 |
[1] | [2] | [3] |
2 | 2 | 1 |
複数あるかもしれないことに注意しましょう。
この場合、1と2です。
// //A003.java //c:\pckosien\003.txtにデータを保存しておくこと // import java.io.*; public class A003{ private static final String FILE_NAME="c:\\pckosien\\003.txt"; public static void main(String[] args)throws IOException{ //0..99の添字を持つ配列 int[] data=new int[100]; BufferedReader br=new BufferedReader(new FileReader(FILE_NAME)); String buf; while((buf=br.readLine())!=null){ //入力データ(1..100)より1少ない(0..99)の添字の値を1増やす data[Integer.parseInt(buf)-1]++; } //最大値を求める int max=0; for(int i=0;i<data.length;i++){ if(data[i]>max){ max=data[i]; } } //最大値と等しかったら出力(1少ないので1足すのを忘れずに!) for(int i=0;i<data.length;i++){ if(data[i]==max){ System.out.println(i+1); } } br.close(); } } |
最頻値とは、最も頻度の高い(出現回数が多い)値のことです。
入力例を見てください。
「5」という数値が3 つ、「7」は2 つ、他は1 つです。
このとき、もっとも個数の多い「5」が最頻値となります(出力例)。