반응형
-문제
30 = 3 x 2 x 5
1) 2의 배수, 5의 배수를 충족하려면 끝자리는 0으로 끝나야한다.
2) 3의 배수를 충족하려면 각 자리수의 숫자의 합이 3의 배수여야 한다. 102 => 1 + 0 + 2 = 3
3) 내림차순으로 가장 큰 수를 만들 수 있다.
-코드
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
int sum = 0, cnt=0;
for (int i = 0; i < s.size(); i++)
{
if (s[i] - '0' == 0) cnt++;
sum += s[i]-'0';
}
if (cnt == 0 || sum % 3 !=0)
{
cout << -1;
return 0;
}
sort(s.rbegin(), s.rend());
for (int i = 0; i < s.size(); i++)
{
cout << s[i];
}
return 0;
}
반응형
'이론 > 코딩테스트' 카테고리의 다른 글
[백준] 1946번 신입사원 (그리디 알고리즘) (0) | 2022.08.04 |
---|---|
[백준] 2217번 로프 (그리디 알고리즘) (0) | 2022.08.04 |
[백준] 1026번 보물 (그리디 알고리즘) (0) | 2022.08.03 |
[백준] 2941번 크로아티아 알파벳 (문자열) (0) | 2022.08.03 |
[백준] 1764번 듣보잡 (맵) (0) | 2022.08.03 |