728x90
숫자들을 조합해서 30으로 나누어 떨어지는 가장 큰 수를 출력하는 문제입니다.
숫자들의 합이 3으로 나누어 떨어지면서 0이 존재하는지 확인하면 됩니다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
string N;
cin >> N;
long long sum = 0;
bool zero = false;
for (int i = 0; i < N.size(); i++) {
sum += (N[i] - '0');
if (!(N[i] - '0')) {
zero = true;
}
}
sort(N.begin(), N.end(), greater<int>());
(sum % 3 || !zero) ? cout << -1 << "\n" : cout << N << "\n";
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 1120번 문자열 (0) | 2019.09.26 |
---|---|
[C++] 백준 2875번 대회 or 인턴 (0) | 2019.09.26 |
[C++] 백준 9205번 맥주 마시면서 걸어가기 (0) | 2019.09.25 |
[C++] 백준 10800번 컬러볼 (0) | 2019.09.25 |
[C++] 백준 10799번 쇠막대기 (0) | 2019.09.24 |