• 분류 전체보기
    • 갈무리
    • 씨플플
    • SPRING
    • PI
    • ALGORITHM
    • DIARY
    • (∗❛ᴗ❛∗)
    • (●'◡'●)
    • 민디의 취준일기 (202301~)
  1. [2792] 보석상자 2020.04.01
  2. [10026] 적록색약 2020.03.09
  3. [C] 퀵소트 2020.02.19
  4. [C] TCP 소켓프로그래밍 파일전송 (서버, 클라이언트) 2020.02.15
[1431] 시리얼번호 #ALGORITHM
2020. 2. 19.

하

비교함수 만들기 힘들다

 

이리보니까 이래 간단한데...

#include <iostream>
#include <deque>
#include <string>
#include <algorithm>
using namespace std;
 
struct cmp {
    bool operator()(string first, string second) {
        // 길이 작은순
        int n = 0, m = 0;
 
        if (first.length() != second.length()) {
            return first.length() < second.length();
        }
 
        for (string::size_type i = 0; i < first.length(); i++) {
            char c = first[i];
            if (c - '0' < 10) {
                n += c - '0';
            }
            c = second[i];
            if (c - '0' < 10) {
                m += c - '0';
            }
        }
 
        if (n != m) {
            return n < m;
        }
        else {
            return first < second;
        }
 
        return false;
 
    }
};
int main() {
 
    deque<string> dq;
    int num;
    scanf("%d", &num);
    for (int i = 0; i < num; i++) {
        string str;
        cin >> str;
        dq.push_back(str);
    }
    sort(dq.begin(), dq.end(), cmp());
    for (int i = 0; i < num; i++) {
        cout << dq[i] << endl;
    }
    
}

티스토리툴바