본문 바로가기

ALGORITHM/OTHER

[c++] 1302 베스트셀러 (map 사용)

https://www.acmicpc.net/problem/1302

 

1302번: 베스트셀러

첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고

www.acmicpc.net

 

자바로 풀기로 다짐했었는데.. 자바 map 사용이 익숙지 않아서 잠시 c++을 사용하였다.

 


map<string, int> 정렬 방법

vector<string, int>로 바꾸어서 정렬한다. -> pair 사용!

 

#include <iostream>
#include <map>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;

bool compare(pair<string, int>& a, pair<string, int>& b) {
	if (a.second == b.second) {
		return a.first < b.first;
	}
	return a.second > b.second;
}

int main() {
	int N;
	string input;
	cin >> N;
	map<string, int> m;
	for (int i = 0; i < N; i++) {
		cin >> input;
		m[input]++;
	}
	
	vector<pair<string, int>> v(m.begin(), m.end());
	sort(v.begin(), v.end(), compare);
	cout << v.begin()->first;

	return 0;
}