*문제 출처는 프로그래머스에 있습니다.
문제 제목: 정수 내림차순으로 배치하기 (1단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120817
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 사항
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
입출력 예 설명
없음
나의 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long solution(long long n) {
string strl = to_string(n);
sort(strl.begin(), strl.end());
reverse(strl.begin(), strl.end());
return stoul(strl);
}
※ 알아야 할 것
우리가 흔히 알고 있는 문자열을 정수로 바꿀 때 stoi를 사용한다. 하지만 stoi는 sto + int의 줄인 말이다. 하지만 여기서 stoi를 사용하면 자료형을 모두 다 표현할 수 없게 된다. 그러므로 우리는 여기서 stoul = sto + unsigned long를 사용해야 문자열에서 정수로 바꿀 때 손실 없이 바꿀 수 있게 된다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 행렬의 덧셈 / C++ (0) | 2024.01.22 |
---|---|
Programmers / 문자열 나누기 / C++ (0) | 2024.01.22 |
Programmers / 정수 제곱근 판별 / C++ (0) | 2024.01.16 |
Programmers / 같은 숫자는 싫어 / C++ (0) | 2024.01.15 |
Programmers / 수열과 구간 쿼리 4 / C++ (0) | 2024.01.12 |