- ์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
- sort ํจ์๋ฅผ ๊ตฌํํ๋ ๋๋ ๋ฌธ์ ๋ก ์ํ๋ ์กฐ๊ฑด์ ๋ง๊ฒ ๊ตฌํํฉ๋๋ค.
- sort ํจ์์์ strict weak ordering์ ๋ง๊ฒ ํ์ง ์์ผ๋ฉด ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์๋ ์์ต๋๋ค.
#include<iostream>
#include<string>
#include<algorithm>
#include<cctype>
#include<vector>
using namespace std;
bool cmp(string& s1, string &s2){
if(s1.size()<s2.size()){
return true;
}else if(s1.size() == s2.size()){
int sum1 = 0, sum2 = 0;
for(int i=0;i<s1.size();i++){
if(isdigit(s1[i])){
sum1+=(s1[i]-'0');
}
}
for(int i=0;i<s2.size();i++){
if(isdigit(s2[i])){
sum2+=(s2[i]-'0');
}
}
if(sum1<sum2){
return true;
}else if(sum1 == sum2){
if(s1<s2){
return true;
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}
int main(){
int num;
cin>>num;
vector<string> v;
for(int i=0;i<num;i++){
string s;
cin>>s;
v.push_back(s);
}
sort(v.begin(), v.end(), cmp);
for(int i=0;i<num;i++){
cout<<v[i]<<"\n";
}
}
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.