본문 바로가기

알고리즘 문제풀이/SWEA(SW Expert Academy)

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

문제 출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh&categoryId=AV13zo1KAAACFAYh&categoryType=CODE&problemTitle=1204&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 :

 

설명 :

문제의 난이도는 높지 않은데, 자잘한 실수로 인해 푸는 데 시간이 좀 걸렸던 문제였습니다ㅠ

"문제 제대로 읽기" "새로운 테스트 케이스 시작 시 초기화가 필요한 변수들 까먹지 않기" 명심하자!

 

코드

//문제 제대로 안 읽어서 시간 오래 걸림.
// 총 테스트 갯수 다음에 "각 테스트 케이스의 번호가 한번 더 주어진 뒤" 숫자들 시작함에 주의!
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;

public class SWEA1204_최빈값 {

	public static void main(String[] args) throws FileNotFoundException {
		
		System.setIn(new FileInputStream("input.txt"));
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] scores = new int[101];
		
		for(int tc=1; tc<=num; tc++) {
			
			//새로운 테케 시작 시 초기화!!! 빼먹지 말 것!
			Arrays.fill(scores, 0);
			int max=-1;
			int max_value=-1;
			
			int T = sc.nextInt();
			
			for(int i=0; i<1000; i++) {
				int score = sc.nextInt();
				scores[score]++;
			}
			//점수 모두 카운트 완료
			
			for(int i=0; i<scores.length; i++) { 
				if(scores[i]>=max && i>max_value) { //최빈수가 여러 개일 때는 가장 큰 점수 출력하는 것까지 포함한 코드
					max=scores[i];
					max_value=i;
				}
			}
			
			System.out.printf("#%d %d\n", T, max_value);
			
		}
		
	}

}