문제
리뷰
단순하게 숫자 한 자리씩 잘라서 처리해야지 하고 짰다.
- 정수를 한 자리씩 잘라서 벡터에 넣는다.
- 정렬한다.
- 10의 n승으로 바꿔서 더한다.
다른 분의 풀이를 보니 형변환을 하셔서 간단히 푼 코드였다.
정수를 string 으로 형변환
string str = to_string(1234567);
string을 long long 으로 형변환
long long answerll = stoll("1234");
형변환은 PS에서 반드시 알아야 하고 자주 나오는 요소니까 자주 쓰면서 숙지하자!
내 코드
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
long long solution(long long n) {
long long answer = 0;
vector<int> v;
while (n) {
v.push_back(n % 10);
n /= 10;
}
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
answer += ( pow(10, i) * v[i] );
}
return answer;
}
다른 사람의 코드
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
long long solution(long long n) {
long long answer = 0;
string str = to_string(n);
sort(str.begin(), str.end(), greater<char>());
answer = stoll(str);
return answer;
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
HackerRank Staircase (0) | 2021.01.18 |
---|---|
[프로그래머스] 정수 제곱근 판별 c++ (0) | 2021.01.18 |
Mini-Max sum HackerRank (0) | 2021.01.18 |
[프로그래머스] 스킬트리 c++ (0) | 2021.01.11 |
[프로그래머스] 카펫 c++ (0) | 2020.11.03 |