Posts 알고리즘 - 1204. [S/W 문제해결 기본] 최빈수 찾기 문제
Post
Cancel

알고리즘 - 1204. [S/W 문제해결 기본] 최빈수 찾기 문제

SW Expert Academy 의 1204번 문제입니다. [S/W 문제해결 기본] 강좌를 수강하시는 분들이라면 가장 처음 만날 수 있는 문제입니다.

  • 난이도 : 1

Input

첫 줄에는 테스트 케이스 T가 주어지고, 그 다음줄에는 각 테스트 케이스의 번호가 주어지며, 그 다음줄부터는 1000개의 학생 점수 데이터(0점부터 100점까지의 범위)가 주어집니다.

각 테스트 케이스 별로, 점수 데이터 1천개 중에 가장 많은 빈도의 점수(최빈수)를 구하면 됩니다.
단, 최빈수가 여러 개일 경우 그 중 가장 큰 점수를 출력합니다.

Output

테스트 케이스 번호별로 최빈수를 출력합니다. 출력 형식은 #1 71 \n #2 76 \n … 의 형식입니다.

테스트 케이스는 10개로 주어져 있습니다.

생각한 아이디어

단순하게 가장 많이 나온 숫자를 찾는 문제이기 때문에, 인덱스 0부터 100까지 존재하는 int 배열을 선언한 뒤 각 점수에 해당하는 배열 값을 1씩 증가시키면서 빈도수를 체크했습니다.

(예) 76 을 읽었을 경우, arr[76]의 값을 1 증가시킨다.

이런 식으로 배열에는 각 점수별 빈도수가 체크될 것이며, 가장 큰 빈도수를 가진 인덱스 넘버를 찾아서 출력하면 될 것입니다.

예를 들어 arr[70]의 값이 가장 크다면, 70이 제일 많이 나온 숫자라는 의미이며, 70을 출력합니다.
그러나 만일 가장 많이 나온 최빈수가 72, 87, 96 등과 같이 여러 개라면 그 중에서 가장 큰 96을 출력합니다.

[소스코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include<iostream>
 
using namespace std;
 
int main(int argc, char** argv)
{
    int test_case;
    int T;
    int test_num;
    int temp_score;
    int max=0, freq=0;
    
    cin>>T; //T는 10
     
    for(test_case = 1; test_case <= T; ++test_case)
    {
        // 입력받기 ////////
        cin >> test_num;      
        int * score = new int[101];
        for(int i = 0; i<=100; i++){
            score[i]=0;
        }
         
        for(int i = 0; i<1000; i++){
            cin >> temp_score;
            score[temp_score]++;
        }
         
        for(int i=0;i<101;i++){
            if (max < score[i]){
                max = score[i];
                freq = i;
            }
            else if(max == score[i]){
                if(freq < i)
                    freq = i;
            }
        }       
        cout << "#" << test_num << " " << freq << endl;
         
        delete[] score;
        score = NULL;
        max = 0;
        freq = 0;
 
    }
    return 0;
}

알고리즘 - 소팅(Sorting)과 종류 : 버블정렬, 선택정렬, 삽입정렬

알고리즘 - 1206. [S/W 문제해결 기본] View 문제