[C++] 프로그래머스 정수 내림차순으로 배치하기
2020. 12. 5.
반응형

programmers.co.kr/learn/courses/30/lessons/12933

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이

programmers.co.kr

 

1. 서론

 

아주 보물 같은 level 1 문제. 왜냐하면 C++ 함수에 대해서 많이 알게 해 줬기 때문이다ㅎ

 

2. 문제 풀이

 

정수 n이 있다. 정수의 각 자릿수에 상관없이 숫자를 문자열처럼 정렬하는 것이 문제이다.

예를들어 118372라고 한다면, 873211로 정렬하는 것이다. 주어진 값은 long long형의 숫자이기 때문에 그 값을 맞춰야 한다.

 

처음에는 막막했는데 결과적으로는 함수를 잘 활용한다면 아주 쉬운 문제이다.

정수 n을 문자열로 바꾼 다음에 sort 하고 다시 long long으로 바꿔주면 되는 것이다.

하지만 그냥 int형이 아니라 long long 형이기에 그렇게 썩 쉽지만은 않았다.

 

3. 코드 설명

 

#include <string>
#include <algorithm>

using namespace std;

long long solution(long long n) {
    long long answer = 0;
    string s;
    
    s = to_string(n);
    sort(s.rbegin(), s.rend());
    answer = stoll(s);
    
    return answer;
}

 

to_string 함수는 int, long 상관없이 무조건 문자열로 바꿔줘서 편리하다.

sort 할때 begin, end 앞에 r을 넣으면 역순으로 정렬할 수 있다.

그리고 stoi는 string to int인데 이 함수는 모든 자료형을 지원한다.

stoi, stol, stod, stoll, stof 등.... 붙이기 나름이다. 

단, C++11 부터 지원한다.

 

 

 

 

 

 

 

 

 

 

 

반응형
myoskin