[ 문제 ] : https://programmers.co.kr/learn/courses/30/lessons/42746
[ 문제 접근 ]
결과적으로 풀지 못해서 구글에 정답 코드를 찾아 보았다.
문자열 정렬, sort 함수 custom 까지는 잘 왔으나, bool cmp() 함수 만들때 case를 적절히 나눠서 정렬 기준을 세워주지 못했다.
[ 최종 코드 ]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(string& a,string& b){
if(a.length() == b.length()){
return a>b;
}else {
return a+b > b+a;
}
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> temp;
for(auto& elem:numbers) temp.push_back(to_string(elem));
std::sort(temp.begin(),temp.end(),cmp);
if(temp[0]=="0"){
return "0";
}
for(auto& elem:temp) answer +=elem;
return answer;
}
[ Key Point ]
👉 숫자의 글자수가 같으면 사전순대로 나열하고, 다르면 ? ( 난 ? 부분을 해결하지 못했다.)
다르면 두 수를 합쳐봐서 큰 수가 앞에 오게 해야한다.
bool cmp(string& a,string& b){
if(a.length() == b.length()){
return a>b;
}else { // 글자수가 다르면
return a+b > b+a;
}
}
👉 모든 수가 0 일때는 "0000..00" 이 아니라 0을 리턴해야 된다.
[ 다른 사람 풀이 ]
ref :: https://mungto.tistory.com/22
'PS > Programmers' 카테고리의 다른 글
[소수 찾기] - 완전탐색 ★★☆☆ / 복습 ○ (0) | 2021.12.26 |
---|---|
[모의고사] - 완전탐색 ★☆☆☆ / 복습 ○ (0) | 2021.12.26 |
[이중우선순위큐] - 우선순위큐 ★★★☆ / 복습 ○ (0) | 2021.12.22 |
[디스크 컨트롤러] - 힙(heap) ★★★☆ / 복습 ○ (0) | 2021.12.20 |
[더 맵게] - 힙(heap) ★★☆☆ / 복습 ○ (0) | 2021.12.20 |