문제 설명 |
본 문제는 프로그래머스의 가장 큰 수 문제이다.
해결 과정 |
본 문제를 그냥 정수로 해결할 시 상당히 큰 범위의 수가 나올 수 있어 문자열로써 다루었습니다.
본 문제를 정렬하기 앞서 그냥 주어지는 정렬함수의 조건으로는 해당 문제를 풀 수 없어
사용자정의 조건을 만들었습니다.
그 조건은 비교하는 숫자문자들끼리 서로 덧붙혀 더 큰 숫자가 나오는 경우를 앞쪽에 정렬하는 것 입니다.
이렇게 정렬된 문자배열을 앞에서부터 덧붙혀 반환하면 정답입니다.
코드 전문 |
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<int> numbers) {
string answer = "";
vector<string> str_nums;
int sum = 0;
for (auto n : numbers)
{
str_nums.emplace_back(to_string(n));
sum += n;
}
if (sum == 0) return "0";
sort(str_nums.begin(), str_nums.end(), [] (string s1, string s2) -> bool
{ return (s1 + s2) > (s2 + s1); });
for (auto num : str_nums)
answer += num;
return answer;
}
느낀 점 (잡설 99% , 배운점 1%(많은 편)) |
더보기
머리가 좀 더 말랑말랑해질 수 있게 노력하겠습니다.
긴 글 읽어주셔서 감사합니다.
부족한 점이 있다면 부디 알려주시면 감사하겠습니다.
'알고리즘 부셔버렷 > ProblemSolving' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.12 |
---|---|
[프로그래머스] 소수 찾기 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.10 |
[프로그래머스] 프린터 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.09 |
[프로그래머스] 튜플 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.07 |
[프로그래머스] 수식 최대화 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.07 |
댓글