[ 백준 ] 1302 / 베스트셀러

金弘均·2021년 9월 15일
0

Baekjoon Online Judge

목록 보기
49/228
post-thumbnail
post-custom-banner

# Appreciation

/*
 * Problem :: 1302 / 베스트셀러
 *
 * Kind :: Sorting
 *
 * Insight
 * - C++ 에서는 Map 에서 Value 기준으로 정렬하려면
 *   Vector 로 옮겨야 한다는 것을 알 수 있었다
 *   + Map 자체에서 여러가지 시도해보았으나 불가능했다...
 *     Key 로는 정렬이 가능한 것 같지만 Value 는 안되는 걸로 쾅쾅!!
 */

# Code

//
//  BOJ
//  ver.C++
//
//  Created by GGlifer
//
//  Open Source

#include <iostream>
#include <map>
#include <vector>

using namespace std;

#define endl '\n'

// Set up : Global Variables
typedef pair<string,int> psi;

// Set up : Functions Declaration
/* None */


int main()
{
    // Set up : I/O
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    // Set up : Input
    int N; cin >> N;
    map<string,int> M; /* Map */
    for (int i=0; i<N; i++) {
        string name; cin >> name;
        M[name]++;
    }

    // Process
    vector<pair<string,int>> V(M.begin(), M.end()); /* Map -> Vector */
    sort(V.begin(), V.end(), [](psi &u, psi &v){ /* Vector 에서 Value 기준 정렬 */
        string u_name = u.first, v_name = v.first;
        int u_count = u.second, v_count = v.second;
        /* count 는 내림차순 -> -count 는 오름차순
         * make_pair 로 한꺼번에 [-count, name] 오름차순 정렬 */
        return make_pair(-u_count, u_name) < make_pair(-v_count, v_name);
    });

    // Control : Output
    cout << V.begin()->first << endl;
}

// Helper Functions
/* None */
profile
이런 미친 게임을 봤나! - 옥냥이
post-custom-banner

0개의 댓글