Programmers_큰 수 만들기

😳 백준에서 같은 문제를 풀었던 경험이 있어서 그대로 풀어봤는데 틀린다. 그리고 인터넷에 검색해보니 내 코드는 너무 길었다. 좀 더 효율적인 코드들을 따라해봤는데 너무 똑똑한 사람들이 많은 것 같다.

💻 프로그래머스_큰 수 만들기

  • 주어진 수에서 k개의 숫자를 뺏을 때, 최대의 수를 만들어내야 하는 문제다.
  • 주어진 수의 크기가 n일 때 n-k개의 숫자를 뽑아줘야 한다.
  • 그러므로 처음 for문의 최대 index를 n-k까지로 잡아준다.
  • 다음 인덱스가 될 start 변수는 최대값의 다음 수부터 잡아준다.
  • 각 for문의 마지막에는 answer에 최대값의 변수를 넣어준다.

💻 전체코드

#include <string>
#include <vector>

using namespace std;

string solution(string number, int k)
{
    string answer = "";

    int numSize = number.size() - k;
    int start = 0;
    for (int i = 0; i < numSize; i++)
    {
        char maxNum = number[start];
        int maxIdx = start;
        for (int j = start; j <= k + i; j++)
        {
            if (maxNum < number[j])
            {
                maxNum = number[j];
                maxIdx = j;
            }
        }
        start = maxIdx + 1;
        answer += maxNum;
    }

    return answer;
}

솔직히 나도 내가 뭐라는지 모르겠다. 흐름은 이해하겠는데 어떻게 이런생각을 가질 수 있는지 궁금하다. 많이 더 많이 풀어보면 되려나..

좋은 웹페이지 즐겨찾기