Notice
Recent Posts
Recent Comments
Link
bdfgdfg
[레벨 2] 가장 큰 수 본문
반응형
#include <string>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
bool compare(string& left, string& right)
{
string ret = left + right;
string ret2 = right + left;
return atoi(ret.c_str()) > atoi(ret2.c_str());
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> cmpNum;
for (auto num : numbers)
cmpNum.push_back(to_string(num));
sort(cmpNum.begin(), cmpNum.end(), compare);
if(cmpNum[0] == "0")
return answer = "0";
for (auto& num : cmpNum)
answer += num;
return answer;
}
처음에는 문자열 비교가아닌 정수비교를 생각하여
일의 단위 십단위 백단위등으로 나눈 후
맨 앞의 자리가 같은것끼리 나둔 후 일의 자리 > 십의 자리 > 백의 자리를 비교해 정렬하려고 했다.
ex) 9 98 -> 998. 8 854 -> 8854. 354 32 -> 35432 --- 앞의 자리가 같을 때, 일의 자리수는 무조건 앞 정렬
-> 둘다 10이상의 수일 경우 두번째 자리수. 세번째 자리수등을 비교
하지만 너무 비교연산이 많이들어가고 코드도 복잡해지는것같아 다른 사람의 코드를 참고했을 때, 위의 방법같은거 보단
문자열을 합친 후 더 큰쪽을 내림차순으로 정렬하는게 훨씬 좋은 코드.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[레벨1] 폰켓몬 (0) | 2021.10.24 |
---|---|
[레벨 1] 없는 숫자 더하기 (0) | 2021.10.23 |
[레벨 2] 더 맵게 (0) | 2021.10.16 |
[레벨 2] 타겟 넘버 (0) | 2021.09.30 |
[레벨 2] 주식가격 (0) | 2021.09.29 |
Comments