728x90
https://www.acmicpc.net/problem/10610
최초 풀이
전략
자리수가 10^6만큼이므로 숫자형 데이터타입이 아닌 문자열로 받아 각각의 자리수에 대한 조건을 따져준다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void solve(string n) {
vector<char>v;
string ans = "";
int total = 0;
for (int i = 0; i < n.size(); i++) {
v.push_back(n[i]);
total += n[i] - '0';
}
sort(v.begin(), v.end());// 오름차순으로 정렬
//30으로 나눠지는 수의 조건은 1의 자리가 0이면서 모든 자리수를 더한 값이 3으로 나눠져야한다.
if (v[0] != '0' || total % 3 != 0) {// '-1'출력조건 : 30으로 나눠지지 않는 수
cout << -1;
}
else {
for (int i = v.size()-1; i>=0; i--)
ans += v[i];//뒤로 추가됨
cout << ans;
}
}
int main() {
string N;
cin >> N;
solve(N);
return 0;
}
728x90
'🥇Baekjoon Solutions > 정수론' 카테고리의 다른 글
[C++] 백준 6588번: 골드바흐의 추측 (0) | 2021.07.29 |
---|---|
[C++] 백준 10430번: 나머지 (0) | 2021.07.28 |
[C++] 백준 4375번: 1 (0) | 2021.07.27 |
[C++] 백준 2960번: 에라토스테네스의 체 (0) | 2021.07.26 |
[C++] 백준 1837번: 암호제작 (0) | 2021.07.26 |
댓글