• 정렬 알고리즘 문제 : 프로그래머스 LEVEL 2(가장 큰 수) image - 사용 언어 : C++ - 해결 날짜 : 2021-02-12

    **- 해결 방법** :
    
        - 처음에는 map을 활용하여 key-value 값을 저장한 다음 value 값 끼리 비교하여 정렬하려고 하였는데
        너무 복잡한 것 같아서 중간에 수정하였다.
    
        - 우선 sort함수는 기본적으로 오름차순 이기 때문에 내림차순으로 정렬하기 위해 compare 함수를
        정의하였는데, 인자로 받은 두 string을 순서를 바꿔 + 연산한 결과를 비교하였다.
        string형 vector로 값을 복사하여 저장한 다음 정의한 compare 함수를 기준으로 내림차순 정렬하였고,
        순서대로 answer에 추가하였다.
        정렬 후 제일 큰 값이 0이라면(0만 여러개 존재하는 경우) 0만 출력되어야 하므로 따로 케이스를 넣어주었다.
    
    
    - 코드
    
    ```c++
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    //내림차순으로 정렬하기 위한 비교 함수
    bool compare(string a, string b){
        return a+b > b+a;
    }
    
    string solution(vector<int> numbers) {
        string answer = "";
    
        //string형 vector로 복사하여 저장
        vector<string> copy;
        for(int i = 0; i<numbers.size(); i++){
            copy.push_back(to_string(numbers[i]));
        }
    
        //compare 함수를 기준으로 정렬
        sort(copy.begin(), copy.end(), compare);
    
        for(int i = 0; i<copy.size(); i++){
            answer += copy[i];
        }
        //정렬 후 제일 큰 값이 0이라면 0을 반환
        if(answer[0] == '0') return "0";
    
        return answer;
    }
    ```