10610번: 30
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한
www.acmicpc.net
1. 입력값이 10^5 개의 숫자까지 들어올 수 있기 때문에 int로는 안된다. string을 이용해서 입력받는 것으로 수정했다.
2. 만약 n에 0이 없으면 탈락, 개별 숫자의 합이 3이 아니면 탈락을 통과하고 나면,
3. 약수가 30인 수가 존재하는 것이므로, 내림차순으로 정렬해서 가장 큰 숫자를 출력해준다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
int main() {
std::string n;
std::cin >> n;
std::vector<char> not_v(n.begin(), n.end());
std::vector<int> v;
int answer = 0;
std::vector<char>::iterator iter;
for (iter = not_v.begin(); iter != not_v.end(); iter++) {
int tmp = *iter - '0';
answer += tmp;
v.push_back(tmp);
}
if (answer % 3 != 0) {
std::cout << -1 << std::endl;
return 0;
}
sort(v.rbegin(), v.rend());
if (find(v.begin(), v.end(), 0) == v.end()) {
std::cout << -1 << std::endl;
return 0;
}
else {
for (int i = 0; i < v.size(); i++) {
std::cout << v[i];
}
std::cout << std::endl;
}
return 0;
}
'Computer Science > C++' 카테고리의 다른 글
백준 C++ | #22 BOJ2579 계단 오르기 C++ 문제 풀이 (0) | 2022.08.22 |
---|---|
백준 C++ | #21 BOJ18310 안테나 C++ 문제 풀이 (0) | 2022.08.18 |
백준 C++ | #19 BOJ2875 대회 or 인턴 C++ 문제 풀이 (0) | 2022.08.18 |
백준 C++ | #18 BOJ11047 동전 0 C++ 문제 풀이 (0) | 2022.08.18 |
백준 C++ | #17 BOJ5585 거스름돈 C++ 문제 풀이 (0) | 2022.08.16 |