본문 바로가기

Algorithm/C++

[C++] 20920 : 영단어 암기는 괴로워

728x90
반응형

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

 

20920번: 영단어 암기는 괴로워

첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단

www.acmicpc.net

 

#include <bits/stdc++.h>
using namespace std;

int n, m;
map<string, int> dic;

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

int main(void) {
    cin >> n >> m;
    string input;
    for (int i = 0; i < n; i++) {
        cin >> input;
        if (input.length() < m) {
            continue;
        }
        if (dic.find(input) != dic.end()) {
            dic[input]++;
        } else {
            dic[input] = 1;
        }
    }
    vector<pair<string, int>> v(dic.begin(), dic.end());
    sort(v.begin(), v.end(), fun);
    for (int i = 0; i < v.size(); i++) {
        cout << v[i].first << "\n";
    }
}

 

c++의 자료구조를 사용하여 문제를 해결했습니다.

728x90
반응형

'Algorithm > C++' 카테고리의 다른 글

[C++] 1515 : 수 이어 쓰기  (0) 2024.03.05
[C++] 21921 : 블로그  (0) 2024.03.05
[C++] 13305 : 주유소  (1) 2024.03.04
[C++] 9017 : 크로스 컨트리  (1) 2024.02.25
[C++] 22866 : 탑 보기  (0) 2024.02.24