[java]최빈수 구하기 - SWEA 1204

풀이

문제 해석을 하자면,

  • 최빈수를 구하자
  • 단, 최빈수 여러 개 일 때에는 가장 큰 점수 출력


풀이

  • 최빈수 : 제일 많이 나타난 수
  • 배열 인덱스에 맞게 숫자 ++ 로 간단히 끝내자
    • 복잡도는 O(N) 으로 입력크기(N) 만큼으로 빠르다.



코드

public class 최빈수구하기_1204 {
  public static int[] inArr = new int[101]; // 0~100점

  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();
    int T = Integer.parseInt(br.readLine());
    for(int t=1; t<=T; t++) {
      //init
      for(int i=0; i<101; i++) inArr[i] = 0;
      //input
      br.readLine(); // testcase
      StringTokenizer stk = new StringTokenizer(br.readLine(), " ");
      for(int i=0; i<1000; i++) { // 학생수 : 1000명
        int num = Integer.parseInt(stk.nextToken()); // 점수
        inArr[num]++;
      }
      //run
      int maxNum = 0; // 최대점수
      int maxInArr = 0; // 최빈수
      for(int i=0; i<101; i++) {
        if(maxInArr <= inArr[i]) {
          maxInArr = inArr[i];
          maxNum = i;
        }
      }
      //output
      sb.append("#"+t+" "+maxNum+"\n");
    }
    System.out.print(sb);
  }
}



느낀점

생략

댓글남기기