반응형

 

 

 

<코드>

#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;

string s;
vector<int> v;
int N, sum;

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie();

	cin >> s;

	for (int i = 0; i < s.size(); i++)
	{
		v.push_back(s[i] - '0');
		sum += v[i];
	}

	sort(v.begin(), v.end(), greater<int>());

	if (v[v.size() - 1] == 0 && sum % 3 == 0)
		for (int i = 0; i < v.size(); i++) cout << v[i];
	else cout << -1;
}

 

풀이 방법

 

각 자릿수들을 벡터에 push 한 뒤

각 자리 수들의 합이 3으로 나눠지며, 0이 하나라도 있을 경우 30의 배수가 될 수 있으므로

30의 배수를 만들 수 있다면 각 자릿수들이 담긴 벡터를 내림차순으로 정렬한 뒤 그대로 출력한다. 

 

 

 

www.acmicpc.net/problem/10610

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net

 

반응형

+ Recent posts