오늘의 알고리즘
[C++] 백준 20920 영단어 암기는 어려워
하늘하늘 .
2022. 6. 13. 15:07
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
std::map<std::string, int> map = {};
bool cmp(std::string s1, std::string s2)
{
if (s1.size() == s2.size() && map[s1] == map[s2])
return s1 < s2;
else if (map[s1] == map[s2])
return s1.size() > s2.size();
return map[s1] > map[s2];
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
int N = 0;
int M = 0;
std::cin >> N >> M;
std::vector<std::string> vec = {};
for (int i = 0; i < N; ++i)
{
std::string s = {};
std::cin >> s;
if (s.size() < M)
continue;
if (!map[s])
vec.push_back(s);
++map[s];
}
std::sort(vec.begin(), vec.end(), cmp);
for (int i = 0; i < vec.size(); ++i)
{
std::cout << vec[i] << "\n";
}
return 0;
}
sort를 어떻게 하느냐가 중요했던 문제
여기서 시간이랑 메모리를 줄이기 위해서 map을 사용하지 않고 한다면 더 공부가 될 것이다.