문제
https://school.programmers.co.kr/learn/courses/30/lessons/42746

풀이
처음에는 브루트포스로 풀려고 했으나, 시간 초과가 나왔다.
1. 수를 문자열로 바꾸고, 벡터에 저장한다.
2. 문자열을 더했을 때 큰 값이 앞에 가도록 (오름차순) cmp 함수를 만들었다.
3. 이후 벡터를 돌면서 문자열을 더하고, 최댓값이 0인 경우 000 같은 값이 나올 수 있기에 예외처리를 추가했다.
#include <bits/stdc++.h>
using namespace std;
string ans = "";
bool cmp(string a, string b) {
return a + b > b + a;
}
string solution(vector<int> numbers) {
vector<string> v;
for (auto n : numbers) {
v.push_back(to_string(n));
}
sort(v.begin(), v.end(), cmp);
for (auto n : v) {
ans += n;
}
if (ans[0] == '0') {
return "0";
}
return ans;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [PG / C++] 프로그래머스 단어 변환 (1) | 2025.05.26 |
|---|---|
| [PG / C++] 프로그래머스 스티커 모으기 (2) (0) | 2025.03.20 |
| [PG / C++] 프로그래머스 등굣길 (0) | 2025.02.15 |
| [PG / C++] 프로그래머스 베스트앨범 (0) | 2025.02.13 |
| [PG / C++] 프로그래머스 의상 목록 (0) | 2025.02.12 |