문제
https://www.acmicpc.net/problem/10610
걸린 시간
-
풀이
C++
#include <bits/stdc++.h>
#define INF 1e9
#define all(c) c.begin(), c.end()
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
bool compare(int i, int j){
return i > j;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
string s;
cin >> s;
if(s.find('0') == string::npos){
cout << -1;
return 0;
}
int sum = 0;
vector<int> ans;
for(char c : s){
int n = c-'0';
sum += n%3;
ans.push_back(n);
}
if(sum%3 != 0){
cout << -1;
return 0;
}
else{
sort(all(ans), compare);
for(int i : ans) cout << i;
}
return 0;
}
설명이 불친절한 문제. 주어진 수에 포함된 숫자들을 섞어 30 의 배수가 되는 가장 큰 수를 만드는 문제이다. '섞어' 라는 단어에 숫자를 모두를 포함한다는 의미가 함축되어 있었다.
각 자리수를 3으로 나눈 나머지의 합이 3으로 나누어 떨어진다면, 전체수도 3의 배수라는 특징을 찾아내면 쉽게 해결할 수 있다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 1744번 수 묶기 (0) | 2021.04.18 |
---|---|
Baekjoon 9663번 N-Queen (0) | 2021.04.14 |
Baekjoon 8682번 Happy monkey (0) | 2021.03.21 |
Baekjoon 17087번 숨바꼭질 6 (0) | 2021.03.21 |
Baekjoon 16508번 전공책 (0) | 2021.03.08 |
댓글