-
정렬 알고리즘 문제 : 프로그래머스 LEVEL 2(가장 큰 수) - 사용 언어 : 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; } ```