본문 바로가기

Algorithm/Sorting

Baekjoon 1431 시리얼 번호

Link https://www.acmicpc.net/problem/1431

소스결과 1996 KB / 0 ms

출처 Baekjoon

언어 C++ 17

분류 정렬

 

소스코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool cmp(string& str1, string& str2) {

	int len1 = str1.length();
	int len2 = str2.length();

	if (len1 != len2)
		return len1 < len2;

	int str1Sum = 0;
	int str2Sum = 0;

	for (int i = 0; i < len1; i++) {
		if ('0' <= str1[i] && str1[i] <= '9')
			str1Sum += str1[i] - '0';


		if ('0' <= str2[i] && str2[i] <= '9')
			str2Sum += str2[i] - '0';
	}

	if (str1Sum != str2Sum)
		return str1Sum < str2Sum;

	return str1 < str2;
}

int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(0);

	int n; cin >> n;

	vector<string> inputs(n);

	for (int i = 0; i < n; i++)
		cin >> inputs[i];

	sort(inputs.begin(), inputs.end(), cmp);

	for (int i = 0; i < n; i++)
		cout << inputs[i] << '\n';

	return 0;
}

'Algorithm > Sorting' 카테고리의 다른 글

Baekjoon 10814 나이순 정렬  (0) 2019.08.23
Baekjoon 10825 국영수  (0) 2019.08.23
Baekjoon 1181 단어 정렬  (0) 2019.08.22
BaekJoon 10989 수 정렬하기 3  (0) 2019.01.12
BaekJoon 1026 보물  (0) 2019.01.12