반응형
lambda, std algorithm, vector
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
struct ALPHA
{
public:
ALPHA(char c, int p)
{
apb = c;
point = p;
}
char apb;
int point;
int level = 0;
bool operator < (ALPHA& al)
{
return this->point > al.point;
}
};
int main()
{
int N;
string str;
vector<ALPHA> v;
int num = 9;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> str;
for (int j = 0; j < str.size(); j++)
{
auto it = find_if(v.begin(), v.end(), [str, j](auto it) {return it.apb == str[j];});
if (it == v.end())
{
v.push_back(ALPHA(str[j], 0));
it = --v.end();
}
it->point += static_cast<int>(pow(10, str.size() - j - 1));
}
}
sort(v.begin(), v.end());
int result = 0;
for (int i = 0; i < v.size(); i++)
{
v[i].level = num--;
result += v[i].level * v[i].point;
}
cout << result;
return 0;
}
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
vector<pair<int, char>> pv;
string str;
int N;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> str;
for (int j = 0; j < str.size(); j++)
{
auto it = find_if(pv.begin(), pv.end(), [str, j](auto it) {return it.second == str[j];});
if (it == pv.end())
{
pv.push_back(pair<int, char>(0, str[j]));
it = --pv.end();
}
it->first += static_cast<int>(pow(10, str.size() - j - 1));
}
}
sort(pv.begin(), pv.end());
int result = 0;
int num = 10 - static_cast<int>(pv.size());
for (int i = 0; i < pv.size(); i++)
result += num++ * pv[i].first;
cout << result;
return 0;
}
반응형
LIST
'알고리즘 문제 > 백준' 카테고리의 다른 글
[C++] 파티(Dijkstra) - 1238 (1) | 2022.12.22 |
---|---|
[C++] 가운데를 말해요 - 1655 (2) | 2022.12.10 |
[C++] 축사 배정 - 2188 (0) | 2022.12.01 |
[C++] 별자리 만들기 - 4386 (0) | 2022.11.29 |
[C++] 2*n 타일링 2 - 11727 (1) | 2022.11.26 |