[알고리즘C++]큰 수 만들기

후이재·2020년 9월 3일
1

오늘의 문제

https://programmers.co.kr/learn/courses/30/lessons/42883

큰 수 만들기

나의 풀이

#include <string>
#include <vector>

using namespace std;

string solution(string number, int k) {
    string answer = "";
    
    int size = number.size();
    int offset = 0;  
    int count = size - k;
    
    for(int j=0;j<size - k;j++){
        int maxN = 0;
        int maxIdx = offset;
        for(int i=offset;i<= size-count;i++){
            if(maxN < number.at(i) -'0'){
                maxIdx = i;
                maxN = number.at(i)-'0';
            }
        }
        if(maxIdx+count == size){// 나머지 볼거 없음
            return answer + number.substr(maxIdx, count);
        }
        answer += to_string(maxN);
        count--;
        offset = maxIdx+1;
    }
    return answer;
}

모범 답안

#include <string>
#include <vector>
#include <iostream>
using namespace std;

string solution(string number, int k) {
    string answer = "";
    answer = number.substr(k); 
    for(int i = k-1;i >=0;i--){
        int j = 0;
        do{
            if(number[i] >= answer[j]){
                char temp = answer[j];
                answer[j] = number[i];
                number[i] = temp;
                j++;
            }else{
                break;
            }
        }while(1);
    }



    return answer;
}

배울 점

  • 초반에 이 방법으로 하면 되겠다 단정지어버려서 아예 다른 방향으로 풀고 있게 되었음
  • 내 방법이 맞는지 확인이 필요하다.
  • 단순하게 생각할 필요가 있다.
profile
공부를 위한 벨로그

0개의 댓글