본문 바로가기

problem solving

[프로그래머스]가장 큰 수

정렬한 후에 합치는 식으로 코드를 작성했다.

문제의 요구사항에 맞춰 정렬하기 위해  두 개의 값을 문자열로 바꾸고

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