키베이루's diary

[C++] 백준 10610번 30 본문

알고리즘/기타

[C++] 백준 10610번 30

키베이루 2022. 5. 26. 03:36

 

1) 문제설명

백준 Online Judge 10610번 30

https://www.acmicpc.net/problem/10610

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net

 

2) 해결방법

 

입력을 하나씩 char형으로 받은 후에 int 형으로 변환한다.

그 후 입력받은 값의 합을 저장한 후에 내림차순으로 정렬한다.

입력받은 값의 합이 3의 배수이면 내림차순으로 출력하고 3의 배수가 아니면 -1을 출력한다.

 

3) 코드

#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>

using namespace std;

/*


*/

bool compare(int a, int b) {
	return a > b;
}
int main() {
	int n;
	int arr[100001];
	char str[100001];
	cin >> str;
	int sum = 0, i = 10;
	for (int i = 0;i<strlen(str); i++) {
		arr[i] = str[i] - '0';
		sum = sum + arr[i];
	}
	sort(arr, arr + strlen(str),compare);
	if (sum % 3 == 0 && arr[strlen(str)-1] == 0) {
		for (int i = 0; i < strlen(str); i++) {
			cout << arr[i];
		}
	}
	else {
		cout << -1;
	}
}

 

'알고리즘 > 기타' 카테고리의 다른 글

[C++] Vector  (0) 2022.06.03
[C++] 백준 18870번 좌표압축  (0) 2022.05.26
[C++] 백준 1927번 최소힙  (0) 2022.05.23
[C++] Deque  (0) 2022.05.23
[C++] 백준 17298번 오큰수  (0) 2022.05.23
Comments