문제 링크입니다: https://www.acmicpc.net/problem/1431
algorithm 헤더의 sort() 메소드를 적절히 사용하면 쉽게 풀 수 있는 문제였습니다.
간혹 invalid comparator 에러가 뜰 수 있는데 이유는 잘 모르겠습니다.
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int sum(string s)
{
int result = 0;
for (int i = 0; i < s.length(); i++)
if ((s[i] - '0') >= 1 && (s[i] - '0') <= 9)
result += (s[i] - '0');
return result;
}
bool cmp(string a, string b)
{
//1번 조건
if (a.length() != b.length())
return a.length() < b.length();
else
{
int aSum = sum(a);
int bSum = sum(b);
//2번 조건
if (aSum != bSum)
return aSum < bSum;
//3번 조건
else
return a < b;
}
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<string> v(N);
for (int i = 0; i < N; i++)
cin >> v[i];
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < N; i++)
cout << v[i] << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2740번 행렬 곱셈 (0) | 2019.01.03 |
---|---|
백준 1072번 게임 (0) | 2019.01.03 |
백준 11944번 NN (0) | 2018.12.30 |
백준 16466번 콘서트 (0) | 2018.12.30 |
백준 11651번 좌표 정렬하기 2 (0) | 2018.12.30 |