문제 링크 

 

숫자 하나가 주어진다.

각 자리 숫자를 바꿔서 30의 배수중에 가장 큰 숫자를 만들어야 한다. 

30의 배수가 되려면 일단 마지막 자리가 '0'이어야 한다. 

각 자리 숫자를 모두 더하면, 3의 배수가 되어야 한다. 

 

"맞았습니다" 코드 링크 

#include <bits/stdc++.h>
using namespace std;

long long sum;
string num_st;

int main(void) { // 30의 배수의 조건 : 각 자리 수 합이 3의 배수. 0으로 끝나기.
  ios::sync_with_stdio(0);
  cin.tie(0);

  cin >> num_st;
  int len = num_st.length();
  for(auto n : num_st) sum += (n - '0'); // 각 자리수 합
  sort(num_st.begin(), num_st.end(), greater<>()); // 내림차순정렬

  if(num_st[len-1] == '0' && sum % 3 == 0) cout << num_st;
  else cout << -1;

  return 0;
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

조합 백준 2407번 c++  (0) 2022.03.02
완전제곱수 백준 1977번 c++  (0) 2022.02.28
분수찾기 백준 1193번 c++  (0) 2022.02.25
잃어버린 괄호 백준 1541번 c++  (0) 2022.02.24
동전 0 백준 11047번 c++  (0) 2022.02.24

+ Recent posts