Study hard
(c++)프로그래머스 코딩테스트 연습 - 가장 큰 수 본문
programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
[풀이]
algorithm 라이브러리의 sort함수를 이용해 수를 정렬하였다.
두 수를 붙였을 때 더 큰 수가 되는 순서로 정렬하여 문자열로 바꿔주었다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//붙여서 더 큰 수가 되는 순서로 정렬
bool sortNum(int &A, int &B) {
string x = to_string(A) + to_string(B);
string y = to_string(B) + to_string(A);
return stoi(x) > stoi(y);
}
string getAns(vector<int> numbers) {
string ans = "";
for (int i = 0; i < numbers.size(); i++) {
ans += to_string(numbers[i]);
}
return ans;
}
string solution(vector<int> numbers) {
string answer = "";
sort(numbers.begin(), numbers.end(), sortNum);
answer = getAns(numbers);
if (answer[0] == '0')
answer = "0";
return answer;
}
'프로그래머스 > 정렬' 카테고리의 다른 글
(c++)프로그래머스 코딩테스트 연습 - H-Index (0) | 2020.10.21 |
---|---|
(c++)프로그래머스 코딩테스트 연습 - K번째수 (0) | 2020.10.21 |