[백준] 1431번 시리얼 번호 (C++, 정렬)

728x90
반응형

C++ 어려버 ㅠㅠ

새 언어로 처음부터 다시 하려니 힘들다

 

#define _CRT_SECURE_NO_WARNINGS
#define rep(i,s,e) for(int i=s;i<e;i++)
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;


int cmp(const string &a,const string& b) {
	if (a.length() != b.length()) {
		return a.length() < b.length();
	}
	else {
		int sum = 0, sum2 = 0;
		rep(i, 0, a.length()) {
			if(a[i]>='0' && a[i]<='9')
			sum += a[i] - '0';
		}
		rep(i, 0, b.length()) {
			if (b[i] >= '0' && b[i] <= '9')
			sum2 += b[i] - '0';
		}
		if (sum != sum2)return sum < sum2;
		else return a < b;

	}
	

}

int main(int argc, char** argv)
{

	freopen("input.txt", "r", stdin);

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int n; 
	cin >> n;
	vector<string> v(n);
	rep(i, 0, n) {
		cin >> v[i];
	}
	sort(v.begin(), v.end(), cmp);

	for (auto x : v) {
		cout << x << "\n";
	}
	
	return 0; 
}
728x90
반응형
TAGS.

Comments