https://www.acmicpc.net/problem/11653
✔ 알고리즘 분류: 정수론
✔ 이 문제는 30의 배수들의 두 가지 특징을 알아야 한다.
✔ 30(3x10)의 배수인 수들의 특징
(1) 0이 최소 한 번 이상 나와야 한다.
(2) 모든 자릿수들의 합이 3의 배수이다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a, int b) {
return a > b;
}
int main() {
int num[10] = {}, sum=0;
string s;
cin >> s;
for (int i = 0; i < s.size(); i++) {
num[s[i] - '0']++;
sum += s[i] - '0';
}
if (sum % 3 == 0 && num[0] != 0) {
for (int i = 9; i >= 0; i--) {
if (num[i] != 0) {
for (int j = 0; j < num[i]; j++)
cout << i;
}
}
}
else {
cout << -1;
}
return 0;
}