문제 링크입니다: https://www.acmicpc.net/problem/10610
30의 배수이기 위해서는 다음의 조건을 충족해야합니다.
1. 끝의 자리수가 0이여야 합니다.
2. 각 자리의 수의 합이 3의 배수여야 합니다.
따라서 위 두 조건을 충족하지 못한다면 -1을 출력해주고 조건을 충족한다면 내림차순으로 숫자를 정렬해주고 출력하면 됩니다!
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//내림차순 정렬
bool cmp(char a, char b)
{
if (a > b)
return true;
return false;
}
int main(void)
{
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;
}
//합이 3의 배수가 아니거나 0이 없다면
if (sum % 3 || !zero)
cout << -1 << "\n";
else
{
sort(N.begin(), N.end(), cmp);
cout << N << "\n";
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2873번 롤러코스터 (4) | 2018.07.23 |
---|---|
백준 1080번 행렬 (0) | 2018.07.23 |
백준 2875번 대회 or 인턴 (7) | 2018.07.23 |
백준 14889번 스타트와 링크 (2) | 2018.07.23 |
백준 1405번 미친 로봇 (0) | 2018.07.23 |