https://www.acmicpc.net/problem/11652
3
1
2
2
>> 2
입력을 받은 후, sort로 정렬한다.
왼쪽부터 수를 세면서
이전 인덱스와 같으면 cnt를 더해주고,
이전 인덱스와 다르면 cnt가 최대인지 비교한 후, cnt를 1로 초기화해준다.
최대이면 max에 저장, idx에 해당 인덱스 저장한다.
마지막에 한번 더 비교해주자..
#include <iostream>
#include <algorithm>
using namespace std;
long long arr[100001];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
for (int i=0; i<N; i++)
cin >> arr[i];
sort(arr, arr+N); // 정렬
int cnt, max, idx; // cnt = 현재 카운트 max = 젤 많은 카운트 idx = 젤 많은 숫자 idx
cnt = 1;
max = 1;
idx = 0;
for(int i=1; i<N; i++){
if (arr[i] == arr[i-1]){ // 전에 꺼랑 같으면
cnt++;
}
else{ // 다르면
if(cnt > max){
max = cnt;
idx = i-1;
}
cnt = 1;
}
}
if(cnt > max){
max = cnt;
idx = N-1;
}
cout << arr[idx] << '\n';
return 0;
}
첨에 문제 잘못 읽고 당황.!
헐 언닝 나 백준 풀다가 우연히 마주쳣엉