https://school.programmers.co.kr/learn/courses/30/lessons/42746
처음에 짠 코드는 next_permutation을 이용해서 구현하였다.
next_permutation은 모든 경우의 수를 출력해 주기 때문에,
가장 큰 경우의 수만 계속해서 담으면 될 거라 생각했기 때문이다.
string solution(vector<int> numbers) {
string answer = "";
sort(numbers.begin(), numbers.end());
string n = "";
do {
n = "";
for (int i = 0; i < numbers.size(); i++) {
n += to_string(numbers[i]);
}
if (answer < n)
answer = n;
} while (next_permutation(numbers.begin(),numbers.end()));
return answer;
}
해당 코드르는 결정적으로 시간초과가 너무 많이 나왔다.
어떻게 하면 비교를 쉽게 할 수 있을까?
고민하며 기수정렬을 사용하려 했지만,
더 간단한 방법으로 비교하였다.
bool cmp(string& a, string& b) {
return a + b > b + a;
}
string solution(vector<int> numbers) {
vector<string> str;
string maxN = "";
string answer = "";
for (int i = 0; i < numbers.size(); i++) {
str.push_back(to_string(numbers[i]));
}
sort(str.begin(), str.end(), cmp);
if (str[0] == "0") return "0";
for (int i = 0; i < str.size(); i++) {
answer += str[i];
}
return answer;
}
'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글
백준 골드2 1167 트리의 지름 구하기 (3) | 2024.12.06 |
---|---|
프로그래머스 LV.1 모의고사 (0) | 2024.11.23 |
[PCCP 기출문제] LV.1 붕대감기 (0) | 2024.11.17 |
프로그래머스 LV.2 오픈채팅방 (카카오 코테) (0) | 2024.11.15 |
프로그래머스 LV.2 귤 고르기 (1) | 2024.11.15 |