쌓고 쌓다

[프로그래머스] 정수 내림차순으로 배치하기 C++ 풀이 본문

알고리즘/프로그래머스

[프로그래머스] 정수 내림차순으로 배치하기 C++ 풀이

승민아 2022. 7. 7. 21:02

https://school.programmers.co.kr/learn/courses/30/lessons/12933?language=cpp 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

전체 코드

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool comp(char a, char b)
{
    if(a>b)
        return true;
    return false;
}

long long solution(long long n) {
    long long answer = 0;
    string str;
    while(n!=0)
    {
        str+=to_string(n%10);
        n/=10;
    }
    sort(str.begin(),str.end(),comp);
    answer=stoll(str);
    return answer;
}

 

한자리씩 뜯어 string에 넣고 string을 내림차순으로 정렬한뒤

stoll 함수를 통해 long long 형식으로 바꾼다.

 

만약 stoi 함수를 사용한 경우 int 범위가 21억까지만 가능하기에

문제 조건에서 n은 80억 이하 자연수라 했으므로 int로 바꾼다면 아래와 같이 실패한다.

 

+ 다른사람 풀이를 보니 알았는데

n을 바로 to_string()함수를 통해 string으로 바꾸고 정렬을해버리는 방법이 있다.

Comments