https://www.acmicpc.net/problem/10610
문제
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.
미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.
입력
N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.
출력
미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.
예제 입력 1
30
예제 출력 1
30
예제 입력 2
102
예제 출력 2
210
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> num;
string ss;
int main() {
cin >> ss;
int chk1=0;
bool flag=false;
for (int i = 0; i < ss.size(); i++)
{
int a = ss[i]-'0';
num.push_back(a);
chk1 += a;
if (a == 0) flag = true;
}
if (!flag || chk1 % 3 != 0) {
cout << -1;
return 0;
}
sort(num.begin(), num.end());
for (int i = num.size() - 1; i >= 0; i--) {
cout << num[i];
}
return 0;
}
'개발자 > algorithm' 카테고리의 다른 글
백준 2904번 : 수학은 너무 쉬워 (c++) (0) | 2020.08.17 |
---|---|
백준 2824번 : 최대공약수 (c++) (0) | 2020.08.16 |
백준 4375번 : 1 (c++) (0) | 2020.08.16 |
백준 2725번 : 보이는 점의 개수 (c++) (0) | 2020.08.16 |
백준 1837번 : 암호제작 (c++) (0) | 2020.08.16 |