javaで、scannerクラスでN個の数値が与えられて、それの個数を調べたうえで比べて、最も出現回数の多い数値を出力したいです。
・N→公開されている課金アイテムが使用された回数を表す整数。
・a_1,a_2…a_i→N 個の整数。i 列目 (1 ≦ i ≦ N) の整数 a_i は、i 番目に課金アイテムを使用したプレイヤー ID を表す。
・もしも出現回数が多い数値が2つ以上あった場合は昇順に表示します。
・1 ≦ N ≦ 1,000
・1 ≦ a_i ≦ 10,000 (1 ≦ i ≦ N)
[例]
N=5でa_1=1,a_2=1,a_3=2,a_4=2,a_5=3の場合
1 2
N=5でa_1=1,a_2=2,a_3=3,a_4=1,a_5=1の場合
1
java
1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 // 自分の得意な言語で 7 // Let's チャレンジ!! 8 9 Scanner sc = new Scanner(System.in); 10 int N =sc.nextInt(); 11 12 HashMap<Integer,Integer> kakunin = new HashMap<Integer,Integer>(); 13 int Max = 0; 14 int Max2 = 0; 15 for(int j=1;j<=N;j++){ 16 int a_j=sc.nextInt(); 17 if(!kakunin.containkey(j)){ 18 kakunin.get(j,0); 19 }else{ 20 kakunin.get(j,+1); 21 } 22 23 if(kakunin.get(j+1)>kakunin.get(j)){ 24 Max = j; 25 26 if(kakunin.get(j+1)==Max){ 27 Max2=kakunin.get(j+1); 28 } 29 } 30 } 31 System.out.println(Max); 32 if(Max2!=0){ 33 System.out.println(Max2); 34 35 } 36 37 38 } 39}
HashMapでやろうと思っていたのですが、書いているうちにわからなくなってしまいました。
他力本願で申し訳ないんですが、お願いします。
あなたの回答
tips
プレビュー