코딩테스트 연습 - 가장 큰 수 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbers | return |
[6, 10, 2] | "6210" |
[3, 30, 34, 5, 9] | "9534330" |
<프로그래머스 인강 참고>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
string s1=to_string(a)+to_string(b);
string s2=to_string(b)+to_string(a);
return s1>s2;
}
string solution(vector<int> numbers) {
string answer = "";
sort(numbers.begin(),numbers.end(),cmp);
for(auto& i: numbers)
answer+=to_string(i);
return answer[0]=='0'?"0":answer;
}
C++ 정렬
[C++] sort algorithm 정리 및 예시 (tistory.com)
[C++] sort algorithm 정리 및 예시
안녕하세요 BlockDMask 입니다. 오늘은 C++ STL 에서 제공하는 알고리즘 중에 sort 알고리즘에 대해 알아보겠습니다. 0. sort algorithm sort 알고리즘은 헤더파일에 속해있습니다. sort(start, end)를 이용하여 [
blockdmask.tistory.com
'Algorithm > C++' 카테고리의 다른 글
[프로그래머스 C++] 제일 작은 수 제거하기 (0) | 2021.09.09 |
---|---|
[프로그래머스 C++] 정수 내림차순으로 배치하기 / 정렬 (0) | 2021.09.08 |
[프로그래머스 C++] 문자열 내림차순으로 배치하기 (0) | 2021.08.30 |
[프로그래머스 C++] 자연수 뒤집어 배열로 만들기/push_back, vector (0) | 2021.08.30 |
[프로그래머스 C++] 이상한 문자 만들기 / String.Split , size() (0) | 2021.08.29 |
댓글