반응형
포인트
- string 의 정렬의 기본을 알면 편합니다.
- string 의 기본 정렬은 문자열의 길이 입니다. 문자열의 길이 순서로 정렬이 됩니다.
- 그럼 이때 string 으로 된 숫자 들은 어떻게 정렬을 할까요? 그 방법은 사전식 순서 입니다.
- 코드에서 처럼 string 자체를 대소 비교를 하게 되면 사전식 순으로 배열을 하게 됩니다.
python
- 문자열을 무조건 사전식 먼저, 그 다음 길이 순서
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
c++/cpp
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
bool cmp(string a, string b) {
if (b + a < a + b)
return true;
return false;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> vc;
for (auto ele : numbers) vc.push_back(to_string(ele));
sort(vc.begin(), vc.end(), cmp);
for (auto ele : vc) answer+=ele;
if (answer[0] == '0')
answer = "0";
return answer;
}
python
from functools import cmp_to_key
def solution(numbers):
data = list(map(str, numbers))
data.sort(key=cmp_to_key(lambda x, y: int(x + y) - int(y + x)), reverse=True)
if data and data[0] == '0':
return '0'
return ''.join(data)
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] c++ cpp 최댓값과 최솟값 (0) | 2020.10.22 |
---|---|
[알고리즘] 더 맵게 (0) | 2020.10.22 |
[알고리즘] 전화번호 목록 (0) | 2020.10.22 |
[알고리즘] c++ cpp 튜플 (0) | 2020.10.22 |
[알고리즘] c++ cpp 올바른 괄호 (0) | 2020.10.22 |
댓글