GitHubSeob
C++ / 백준 / 10610 / 30 본문
문제
https://www.acmicpc.net/problem/10610
10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
문제풀이
30의 배수이기 때문에 끝자리는 무조건 0이다.
0을 제외하고 3의 배수가 되는지만 확인하면 되는 문제이다.
3의 배수가 되는 조건은 각 자리의 숫자들의 합이 3의 배수일 때이다.
따라서 각 자리 숫자들을 더한 합이 3의 배수이고, 숫자들 중에 0이 하나 이상 있는지만 판별하면 된다.
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
string N = "";
cin >> N;
int sum = 0;
for (int idx = 0; idx < N.size(); ++idx)
sum += N[idx] - '0';
sort(N.begin(), N.end(), greater<>());
if (N[N.size() - 1] != '0' || sum % 3 != 0) cout << -1;
else cout << N;
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 1931 / 회의실 배정 (0) | 2021.09.05 |
---|---|
C++ / 백준 / 1783 / 병든 나이트 (0) | 2021.09.05 |
C++ / 백준 / 11047 / 동전 0 (0) | 2021.09.02 |
C++ / 백준 / 11729 / 하노이 탑 이동 순서 (0) | 2021.09.02 |
C++ / 백준 / 2447 / 별 찍기 - 10 (0) | 2021.09.01 |