# 풀이
어떠한 값이 들어왔을때 그 값을 모두 사용해서 30의 배수인 가장 큰 값을 만드는 프로그램이다.
우선 30의 배수인지를 판별하는 방법으로써 입력받은 값 중에서 0 이 있어야 한다 .만약 0 이없으면 배수가 되지 않을것이기 때문이다.
어떠한 값의 3 배수인지를 확인하려면 다 소인수 분해를 하는 방법도있지만 다른 방법으로는 각 자리의 값을 모두 더해 3으로 나누어 떨어지면 3 의 배수인지를 알수있다 . 이 두개의 조건을 만족하면 30의 배수가 되는 것이다.
# 필기
문자를 숫자로 변형하고 싶을때 문자 - '0' 을 해주면된다. 반대로
숫자를 문자로 바꾸고 싶을때는 숫자 + '0' 을 해준다.
배수를 판별하는 방법을 잘 몰라서 조금은 해맸다 . 아래의 링크에서 자세하게 설명해놓아서 쉽게 이해할수 있었다.
https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%88%98_%ED%8C%90%EC%A0%95%EB%B2%95
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main(){
int n = 0;
string arrT;
vector<int> arr;
int isEven = 0;
getline(cin,arrT);
//문자 - > 숫자 문자 -'0'
for(int i =0;i<arrT.size();i++){
arr.push_back(arrT[i] - '0');
}
//내림차순 정렬
sort(arr.rbegin(),arr.rend());
//마지막숫자를 제외하여 isEven의 넣음
for(int i =0;i<arr.size()-1;i++){
isEven += arr[i];
}
if(isEven % 3 == 0 && arr[arr.size()-1] == 0){
for(int i =0;i<arr.size();i++){
cout << arr[i];
}
cout << endl;
}
else cout << -1 << endl;
}
반응형
'PS-Algorithm > Algorithm' 카테고리의 다른 글
[LeetCode]GenerateParentheses (0) | 2022.12.09 |
---|---|
[BOJ/C++] 1759 암호 만들기 (0) | 2022.01.16 |
[스택] BOJ-1406 에디터 (0) | 2021.11.20 |
[그리디 알고리즘] BOJ - 2875 대회 or 인턴 (0) | 2021.11.20 |
[프로그래머스/C++] 두 개 뽑아서 더하기 (0) | 2020.12.17 |