본문 바로가기
Coding Test/SWEA 풀이

[SWEA] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 : D2 (java)

by CSEGR 2024. 11. 14.
728x90

✔️ 문제 설명

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV13zo1KAAACFAYh&categoryId=AV13zo1KAAACFAYh&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=JAVA&select-1=2&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

✔️ 문제 풀이

SWEA 에서는 기본 코드로 Scanner를 쓰는 예시를 보여주지만, 훨씬 입력이 빠른 BufferedReader, StringTokenizer을 사용했다.

점수가 0 부터 100까지 있으니, 총 101 개의 index만 있으면 빈도수를 저장할 수 있다는 점!!!!

  • 배열 score
    : i 번째 원소는 i 점인 학생 수를 의미한다. 즉, score[i] = i 점인 학생 수 
  • max 
    : 최대 빈도수를 저장할 변수
  • max_score
    : 최빈수를 저장할 변수
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.HashMap;
import java.util.Arrays;
 
class Solution
{
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        
        int t = Integer.parseInt(br.readLine());
         
        int[] score = new int[101];
         
        for(int i = 0; i<t; i++){
            br.readLine(); //인덱스 입력 받기 - i를 활용하면 되서 굳이 저장하지 않음.
            
            st = new StringTokenizer(br.readLine());
            Arrays.fill(score, 0); //0 으로 초기화
            
            for(int j = 0; j <1000; j++){
                score[Integer.parseInt(st.nextToken())]++; 
            }
           
            int max = 0;
            int max_score = Integer.MIN_VALUE;
            
            for(int j = 0 ; j<101; j++){
               if(score[j] > max){
                   max = score[j];
                   max_score = j;
               }
                if(score[j] == max){
                    max_score = j;
                }
            }
            
            System.out.printf("#%d %d\n", i+1, max_score);
        }
    }
}

 

처음에는 HashMap으로 풀었는데,,, 왜인지 모르겠는 Runtime Error🫠

728x90