문제
https://school.programmers.co.kr/learn/courses/30/lessons/42883#
접근방법
..
코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
//k가 1000000이고 number가 1000000이면,
//시간 내에 불가능. -> 중첩 불가
//만약 k가 4라면,
//처음 올 숫자는 앞에서 5개 중에 가장 큰 수.
//두 번 째로 올 숫자는 앞에서 선택된 숫자 자르고 나서
//남은 k+1개 중 가장 큰 수.
string solution(string number, int k) {
string answer = "";
vector<int> num;
for (auto n : number) {
num.push_back(n - '0');
}
for (int i=0;i<num.size() - k;i++) {
int big = -1;
int idx;
for (int j=i;j<i+k+1;j++) {
if (big < num[j]) {
idx = j;
big = num[j];
}
}
answer += to_string(num[idx]);
k = k - (idx - i); //빼버린만큼 k감소
i = idx;
}
return answer;
}
개선할 점
대견한 나 자신.
'코딩테스트 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV3] - 여행경로(dfs) c++ (0) | 2024.02.28 |
---|---|
[프로그래머스 LV3] - 섬 연결하기(kruskal) c++ (0) | 2024.02.26 |
[프로그래머스 LV3] - 입국심사(이분탐색) c++ (0) | 2024.02.25 |
[프로그래머스 LV3] - N으로 표현(DP - possible_sets) c++ (1) | 2024.02.25 |
[프로그래머스 LV3] - 가장 먼 노드(그래프) c++ (1) | 2024.02.25 |