map을 사용하여 string 마다 카운트 해준뒤 (unordered_map 도 가능하다)
맵을 벡터에 페어로 넣어서
벡터를 요소(페어)의 second 값으로 내림차순 정렬하고 second 값이 같으면
first 값으로 오름차순 정렬하는 사용자 정의 함수를 만들어주면 되는 문제이다
map 을 벡터로 넣는 방법은
https://unluckyjung.github.io/cpp/2020/05/07/Sort_map_by_value/ 이 분의 블로그 글이 잘 정리되어 있어 첨부한다
↑ 위의 const pair<int, int>& a 의 부분은 그냥 pair<int, int> a 로 간단하게 해도 문제없이 작동한다
https://www.acmicpc.net/problem/1302
#include <bits/stdc++.h>
using namespace std;
bool cmp(const pair<string, int>& a, const pair<string, int>& b){
if(a.second == b.second){
return a.first < b.first;
}
return a.second > b.second;
}
int main(){
int n;
string s;
map<string, int> mcnt;
cin >> n;
for(int i=0; i<n; i++){
cin >> s;
if(mcnt.find(s)==mcnt.end()){
mcnt.emplace(make_pair(s, 1));
} else {
mcnt[s]++;
}
}
vector<pair<string, int>> v(mcnt.begin(), mcnt.end());
sort(v.begin(), v.end(), cmp);
cout << v.front().first << "\n";
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 14425/c++] 문자열 집합 (0) | 2022.07.10 |
---|---|
[백준 2847/c++] 게임을 만든 동준이 (0) | 2022.07.09 |
[백준 10799/c++] 쇠막대기 (0) | 2022.07.07 |
[백준 10845/c++] 큐 (0) | 2022.07.07 |
[백준 11729/c++] 집합 (0) | 2022.07.06 |
댓글