[C++] 프로그래머스 Level 2 : 큰 수 만들기

Kim Nahyeong·2022년 9월 24일
0

프로그래머스

목록 보기
28/38

#include <string>
#include <vector>

using namespace std;

string solution(string number, int k) {
    string answer = "";
    
    int num = number.length() - k; // 구해야할 숫자 크기
    int idx = 0;
    
    // num 개의 숫자 고르기
    for(int i = 0; i < num; i++){
        // 제일 큰 수 고르기
        char maxChar = number[idx]; // 제일 처음에 있는 수
        int maxIdx = idx; // 인덱스
        // k개 탐색해서 가장 큰 수 고르기
        for(int j = idx; j <= k+i; j++){
            if(maxChar < number[j]){
                maxChar = number[j];
                maxIdx = j;
            }
        }
        answer += maxChar; // string에 그냥 char + 해서 넣을 수 있음
        idx = maxIdx + 1; // 고른 다음 부분부터 탐색
    }
    
    return answer;
}

엘지 전자 코테에서 이것을 응용한 비슷한 문제가 나왔다.
그때는 한 20% 맞춘듯... ㅋㅋㅋ 어떻게 코테 붙었는지 모르겠다.

이 문제의 핵심은 num개의 숫자를 고른다는 것과
앞에서부터 k개씩 탐색해서 그 중 가장 큰 것을 골라서 배치한다는 것이다.
이런 생각을 대체 어떻게 하지
그냥 외우는게 답인 듯 하다.

0개의 댓글