Dolphins의 HelloWorld

Programmers > 코딩테스트 연습 > 정렬 > 가장 큰 수 본문

Algorithm/Programmers 문제풀이

Programmers > 코딩테스트 연습 > 정렬 > 가장 큰 수

돌핀's 2018. 9. 30. 19:48

문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42746



풀이



꽤 많이 고민했는데 풀이가 생각보다 간단해서 짜증났던 문제이다....


암튼 풀이는 진짜 별게 없고 sort알고리즘에서 활용하기 위한 비교함수를 만드는게 핵심이다.


비교함수에는 매개변수로 string 변수 2개를 가져와서


예를들어 string s1과 string s2가 있다면


s1+s2와 s2+s1중 더 큰것을 먼저오도록 작성하면 이 문제는 끝이 난다.


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

using namespace std;

bool cmp(string s1, string s2)
{
	if (s1 + s2 > s2 + s1) return true;
	else return false;
}
string solution(vector<int> numbers) {
	string answer = "";
	vector<string> v;
	for (int i = 0; i < numbers.size(); i++)
		v.push_back(to_string(numbers[i]));
	sort(v.begin(), v.end(), cmp);
	for (int i = 0; i < v.size(); i++)
		answer += v[i];
	if (answer[0] == '0') return "0";
	return answer;
}
Comments