반응형
문제출처
https://programmers.co.kr/learn/courses/30/lessons/42746
문제풀이
1 2 3 4 5 6 | /** * 직감적으로 그냥 큰수가 앞에오면 된다고 생각할 수 있지만 10, 9 와같은 케이스에서 바로 걸린다. * 109보다 910이 더 크기 때문이다. string을 사용하여 10과 9를 붙인것과 9와 10을 붙인것을 비교해서 * 정렬한다면 쉽게 풀수 있는 문제입니다. 예를들어 [34, 345]가 있다면 34345와 34534를 비교해서 정렬을 하는데 * 34534가 더 크므로 [345,34]와 같이 정렬될 것입니다. 또한 0일경우 예외사항으로 빼줘야 하는 것도 중요한 문제입니다. */ | cs |
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <string> #include <vector> #include <algorithm> using namespace std; bool comp(string &a, string &b) { return a+b > b+a ? true : false; } string solution(vector<int> numbers) { string answer = ""; vector<string> tmp; for(int i=0; i<numbers.size(); i++) tmp.push_back(to_string(numbers.at(i))); sort(tmp.begin(), tmp.end(), comp); for(string str : tmp) answer+=str; if(answer[0]=='0') answer="0"; return answer; } | cs |
반응형
'Algorithm' 카테고리의 다른 글
[BOJ 1102] 발전소 (0) | 2019.01.30 |
---|---|
[BOJ 1799] 비숍 (0) | 2019.01.29 |
[BOJ 7562] 나이트의 이동 (0) | 2019.01.28 |
[BOJ 9663] N-Queen (0) | 2019.01.28 |
[BOJ 2098] 외판원 순회 (0) | 2019.01.28 |