코딩테스트 연습/SWEA

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

수기 2022. 5. 23. 10:11

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

점수를 무조건 1000까지 받는줄 모르고 \n 문자 만나면 끝처리 해줘야하나..? 했는데

그냥 점수 입력이 1000인 문제였다...

if (Max <= cnt[i]) 에서 < 로 쓰면 같은 최빈수일 때, 더 큰 수로 갱신되지 않으므로 꼭 <= 로 써주기!

 

1. cnt[inp]++ 로 점수에 대하여 cnt 횟수 계산

2. 빈도수가 더 크거나 같으면 Max와 Max_i 갱신. 100까지 반복해서 가장 큰 점수의 최빈수가 구해짐

 

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
#define MAX 1001
int main() {
	
	//최빈수 확인, 제일 큰 최빈 수 출력

	int T;
	cin >> T;

	for(int t=0;t<T;t++){
		int num;
		cin >> num; //테스트케이스 번호

		int score[MAX] = { 0, };
		int cnt[101] = { 0, };
		int inp;
		int Max, Max_i;

		for(int i=0;i<1000;i++)
		{
			cin >> inp;
			score[i] = inp;
			cnt[inp]++;
		}
		
		Max = 0;
		for (int i = 0; i < 101; i++) {
			if (Max <= cnt[i]) {
				Max = cnt[i];
				Max_i = i;
			}
		}
		cout << "#" << num << " " << Max_i << "\n";
	}


	return 0;
}