본문 바로가기
코딩테스트/SWEA

[JAVA] SWEA 1204번 최빈수 구하기

by PEKAH 2021. 7. 26.

문제

어느 고등학교에서 실시한 1000명의 수학 성적을 토대로 통계 자료를 만들려고 한다.


이때, 이 학교에서는 최빈수를 이용하여 학생들의 평균 수준을 짐작하는데, 여기서 최빈수는 특정 자료에서 가장 여러 번 나타나는 값을 의미한다.


다음과 같은 수 분포가 있으면,


10, 8, 7, 2, 2, 4, 8, 8, 8, 9, 5, 5, 3


최빈수는 8이 된다.


최빈수를 출력하는 프로그램을 작성하여라 (단, 최빈수가 여러 개 일 때에는 가장 큰 점수를 출력하라).

제약 사항

학생의 수는 1000명이며, 각 학생의 점수는 0점 이상 100점 이하의 값이다.

입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.


각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고 그 다음 줄부터는 점수가 주어진다.

출력

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스에 대한 답을 출력한다.

풀이

배열의 인덱스를 점수로 생각하고 풀면 간단하게 해결할 수 있는 문제였다.

 

점수는 0점 이상 100점 이하이기 때문에, 배열을 101만큼 선언해주었다.

 

그리고 루프를 돌며 해당 점수에 해당하는 score 인덱스의 값을 증가시켜 카운트하였다.

 

그 후 최대값을 구하였고, 최빈수가 여러 개 일때 가장 큰 점수를 출력하기 위해 등호를 사용하였다.

 

import java.util.Scanner;
import java.io.FileInputStream;

class 최빈수구하기 {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();
	
		for(int test_case = 1; test_case <= T; test_case++) {
			int caseNum = sc.nextInt();
			int [] score = new int[101];
			
			for (int i = 0; i < 1000; i++) {
				int s = sc.nextInt();
				score[s]++;
			}
			
			int max = 0;
			int result = 0;
			for (int i = 0; i < score.length; i++) {
				if (score[i] >= max) {
					max = score[i];
					result = i;
				}
			}
			
			System.out.println("#" + caseNum + " " + result);
		}
	}
}

'코딩테스트 > SWEA' 카테고리의 다른 글

[JAVA] SWEA 1210번 Ladder1  (0) 2021.07.27
[JAVA] SWEA 1220번 Magnetic  (0) 2021.07.27
[JAVA] SWEA 1209번 Sum  (0) 2021.07.27
[JAVA] SWEA 1208번 Flatten  (0) 2021.07.26
[JAVA] SWEA 1206번 View  (0) 2021.07.26

댓글