백준 / 1431 / C++

jjin·2023년 11월 23일
0

sort(v.begin(), v.end(), sorter)

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool sorter(string a, string b) {
    int alen = a.length();
    int blen = b.length();
    if (alen != blen) return alen < blen;
    
    int asum = 0;
    int bsum = 0;
    for (int i = 0; i < alen; i++) {
        if (isdigit(a[i])) asum += a[i] - '0';
        if (isdigit(b[i])) bsum += b[i] - '0';
    }
    if (asum != bsum) return asum < bsum;
    
    return a < b;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    int n, i;
    cin >> n;
    vector<string> v(n);
    
    for (i = 0; i < n; i++) cin >> v[i];
    
    sort(v.begin(), v.end(), sorter);
    
    for (i = 0; i < n; i++) cout << v[i] << '\n';
}

shorter

profile
진짜

0개의 댓글