백준 알고리즘 문제 풀이 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];
}
}
'프로그래밍 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 풀이 5014번 - 스타트링크 (0) | 2019.09.16 |
---|---|
백준 알고리즘 풀이 1780번 - 종이의 개수 (0) | 2019.09.05 |
백준 알고리즘 1325번 - 효율적인 해킹 (0) | 2019.07.17 |
백준 알고리즘 2644번 - 촌수계산 (0) | 2019.07.09 |
백준 알고리즘 1783번 - 병든 나이트 (0) | 2019.06.11 |