본문 바로가기
알고리즘

[알고리즘] 가장 큰 수

by keel_im 2020. 10. 22.
반응형

포인트

  • 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

댓글