문제
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); } |