문제 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 배열에서 인접한 두 원소를 더하여 그 중 더 큰 순서대로 원소를 배열한다.
// ex) '6' + '10'= '610' | '10' + '6' = '106'
// string 형태이기 때문에 사용 가능하다.
bool st_cmp(string a, string b) {
return a + b > b + a;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> s;
// numbers에 있는 원소들을 string 타입으로 변경하여 s에 삽입
for (int i = 0; i < numbers.size(); i++) {
string tmp = to_string(numbers[i]);
s.push_back(tmp);
}
// 원소를 st_cmp를 기준으로 정렬. 맨 위를 보자
sort(s.begin(), s.end(), st_cmp);
// 첫 번째 원소가 "0"이라면 원소의 배열이 [0, 0, 0, 0]이 되어있을 수도 있다.
// string 형태로 반환해야 하기 때문에 저대로 반환한다면 "0000"이 반환될 가능성이 존재
// 때문에 첫 번째 원소가 0이라면 "0"을 반환하고 종료한다
if (s[0] == "0") return "0";
// s의 값을 answer에 하나씩 추가.
for (int i = 0; i < s.size(); i++)
answer += s[i];
return answer;
}
문제 링크
programmers.co.kr/learn/courses/30/lessons/42746?language=cpp
'C++ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [C++] 모의고사 (0) | 2020.12.11 |
---|---|
[프로그래머스] [C++] H-Index (0) | 2020.12.09 |
[프로그래머스] [C++] K번째 수 (0) | 2020.12.03 |
[프로그래머스] [C++] 이중우선순위큐 (0) | 2020.12.02 |
[프로그래머스] [C++] 디스크 컨트롤러 (0) | 2020.12.02 |