본문 바로가기

개발/알고리즘

가장 많은 수

문제


N개의 정수가 주어진다. 이 중 가장 많이 등장하는 수를 구하시오. 만약 이런 수가 여러 개라면 작은 수를 출력하세요.


시간제한: 1초




입력


첫째 줄에는 정수의 개수 N이 주어진다. (1<=N<=1000000)


둘째 줄부터 N개 줄에 정수가 주어진다. 이 수의 절대값은 2^31 - 1 이하이다.




출력


가장 많이 등장하는 정수를 출력하시오.




힌트


입력 예제


4

1

2

3

3


출력 예제

3


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
49
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
         
         
void MostNumber();
         
         
int main(int argc, char** argv) {
    MostNumber();
    return 0;
}
         
void MostNumber(){
    int N; //정수의 개수 1<=N<=1000000
    scanf("%d", &N);
    int decimal;
    std::vector<int> decimalVector;     
    for(int i=0; i<N; i++){
        scanf("%d", &decimal);
        decimalVector.push_back(decimal);
    }
       
    std::sort(decimalVector.begin(), decimalVector.end());
    int count = 0;
    int value = 0;
    int max = 0;
    int max_value = 0;
    for(int i=0; i<decimalVector.size(); i++){
        if(decimalVector[i] == value){
            count++;
            if(max < count){
                max = count;
                max_value = value;
            }else if(max == count){
                if(max_value > value){
                    max_value = value;
                }
            }
               
        }else{
            value = decimalVector[i];
            count = 1;
        }
    }
    printf("%d", max_value);
}


'개발 > 알고리즘' 카테고리의 다른 글

풍선  (0) 2016.12.02
지은이가 지은 집  (0) 2016.12.02
소수경로  (0) 2016.12.02
N-Queen  (0) 2016.12.02
ASSEMBLY LINE SCHEDULING  (0) 2016.12.02