정렬한 후에 합치는 식으로 코드를 작성했다.
문제의 요구사항에 맞춰 정렬하기 위해 두 개의 값을 문자열로 바꾸고
A + B, B + A 이런식으로 순방향과 역방향으로 문자열을 합친다.
만들어진 문자열을 숫자형으로 바꾼 후 대소관계를 판별해서 반환해준다.
(compare함수에서 문자열을 이용하지 않고 정렬을 시도했지만 1~6, 12번 케이스에서 틀린답을 구해서 실패했다)
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a, int b) {
string A = to_string(a);
string B = to_string(b);
int left = stoi(A + B);
int right = stoi(B + A);
return left > right;
}
string solution(vector<int> numbers) {
string answer = "";
sort(numbers.begin(), numbers.end(), compare);
for(int n : numbers) {
answer = answer + to_string(n);
}
if(answer[0] == '0') { answer = "0"; }
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]소수 찾기 (0) | 2020.03.10 |
---|---|
[프로그래머스]큰 수 만들기 (0) | 2020.03.09 |
[프로그래머스]조이스틱 (0) | 2020.03.08 |
[프로그래머스]컬러링북 (0) | 2020.03.08 |
[프로그래머스]문자열 압축 (0) | 2020.03.07 |