https://www.acmicpc.net/problem/1181
길이가 같은 경우 사전순으로 나열하기 위해 백터에 스트링과 가중치 저장
라이브러리 sort에서 비교함수를 만들어서 사용하는 방법
sort(vec.begin(), vec.end(), cmp_STR);
백터 사용
struct STR
{
string u;
int weight;
};
vector vec;
vec.push_back(temp);
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
struct STR
{
string u;
int weight;
};
vector<STR> vec;
int calculateWeight(string u)
{
int weight = 0;
for (int i = 0; i < u.length(); i++)
weight += int(u[i]);
return weight;
}
bool cmp_STR(STR a, STR b)
{
if (a.u.length() < b.u.length()) {
return true;
}
else if (a.u.length() == b.u.length()) {
return a.u < b.u;
}
else {
return false;
}
}
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(false);
int N;
cin >> N;
STR temp;
string u;
int weight = 0;
for (int i = 0; i < N; i++)
{
cin >> u;
weight = calculateWeight(u);
temp.u = u;
temp.weight = weight;
vec.push_back(temp);
}
sort(vec.begin(), vec.end(), cmp_STR);
string preU = "";
string U;
for (int i = 0; i < N; i++)
{
U = vec[i].u;
if (preU.compare(U) != 0) {
cout << U << "\n";
}
preU = U;
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준]DFS와 BFS - 복습 (0) | 2021.03.31 |
---|---|
[백준]부분수열의 합 - 복습 (0) | 2021.03.22 |
[백준]RGB거리 - 복습 DP (0) | 2021.03.17 |
[백준] 한 줄로 서기 - 복습 (0) | 2021.03.17 |
[백준] 트리 - 복습 (0) | 2021.02.05 |
댓글