코딩테스트/SWEA

[SWEA | Java] 최빈수 구하기

박 성 하 2023. 12. 26. 19:52
728x90

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh

 

SW Expert Academy

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

swexpertacademy.com

티어

소요 시간

15분

분류

브루트포스

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int t = Integer.parseInt(br.readLine());
        while (t-- > 0) {
            int test = Integer.parseInt(br.readLine());
            int[] line = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();

            int[] scores = new int[101];
            for (int num : line) {
                scores[num]++;
            }

            int maxAns = 0, maxKey = 0;
            for (int i = 100; i >= 0; i--) {
                if (maxAns < scores[i]) {
                    maxAns = scores[i];
                    maxKey = i;
                }
            }

            bw.write("#" + test + " " + maxKey + "\n");
        }
        bw.flush();
    }
}

코드 설명

풀 수 있는 방법은 여러가지가 있다.

HashMap, 정렬 후 최대 연속 횟수 구하기, 배열 (위 코드)

이렇게 세 가지 방법으로 풀어봤는데 1000개로 입력이 적어서 그런지 배열이 제일 실행 속도가 좋았다.

728x90