알고리즘/BOJ

백준 10610번 30

꾸준함. 2018. 7. 23. 16:11

문제 링크입니다: 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