백준 알고리즘 문제 풀이 10610번 - 30

2019. 9. 5. 10:40프로그래밍/백준 알고리즘

그리디 알고리즘 

 

3의 배수일 조건 : 각 자릿수의 합이 3의 배수여야 한다.

10의 배수일 조건 : 1의 자릿수가 0이어야 한다.

30의 배수일 조건 : 3의 배수이면서 10의 배수이어야 한다.

 

-문제 풀이

 

1. 예외 조건을 처리한다.

2. 예외 조건에 걸리지 않는다면 맨 뒷자리에 0을 놓고 나머지를 정렬한다.

 

 

-예외 조건 

 

1. 주어진 숫자에 0이 포함되지 않을때. 

2. 각자리수 합이 3의 배수가 아닐 때.

 

-소스 코드

 

#include <iostream>
#include <algorithm>

using namespace std;

int main() 
{
	int hap=0; //3의 배수인지 아닌지 판단하기 위한 변수
	int arr[1000001];
	string a;
	cin>>a;
	for(int i=0;i<a.length();i++){
		arr[i]=int(a.at(i)-48);
		hap+=arr[i];
	} 
	sort(arr,arr+a.length());
	
	if(arr[0]!=0 || hap%3!=0){
		cout<<"-1";
		return 0;
	} //예외처리
	for(int i=a.length()-1;i>=0;i--){
		cout<<arr[i];
	}
}