GitHubSeob
C++ / 프로그래머스 / 가장 큰 수 본문
문제 |
https://programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
문제풀이 |
https://www.acmicpc.net/problem/16496
백준에 있는 문제와 똑같다.
int형으로 들어온 숫자들을 새 벡터에 string형으로 변환하여 push 해준다.
그다음 sort를 compare함수 대로 정렬한다.
compare함수는 string a와 string b를 인자로 받고, a+b, b+a, 둘 중 더 큰 수를 return 한다.
정렬이 끝나면 string answer에 덧붙인다.
만약 answer[0]이 0이라면 0을 return 하면 되고 그 외의 경우는 answer 그대로 return 하면 된다.
코드 |
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(string num1, string num2) {
return num1 + num2 > num2 + num1;
}
string solution(vector<int> numbers) {
string answer("");
vector<string>nums(numbers.size(), " ");
for (int idx = 0; idx < nums.size(); ++idx)
nums[idx] = to_string(numbers[idx]);
sort(nums.begin(), nums.end(), cmp);
for (int idx = 0; idx < nums.size(); ++idx)
answer += nums[idx];
if (answer[0] == '0') return "0";
return answer;
}
'Programmers > Level 2' 카테고리의 다른 글
C++ / 프로그래머스 / 멀쩡한 사각형 (0) | 2022.04.14 |
---|---|
C++ / 프로그래머스 / 오픈채팅방 (0) | 2022.04.13 |
C++ / 프로그래머스 / 주식가격 (0) | 2021.11.12 |
C++ / 프로그래머스 / 프린터 (0) | 2021.11.08 |
C++ / 프로그래머스 / 전화번호 목록 (0) | 2021.11.08 |