[Programmers] - 큰 수 만들기
문제
탐욕법 문제인데 그걸 생각하지 않고 해봤다.
코드
#include <string>
#include <stack>
using namespace std;
string solution(string number, int k) {
string answer = "";
stack<char> s;
int i = 0;
for (int j = 0;j < number.length();j++) {
while (!s.empty() && s.top() < number[i]){
s.pop();
k--;
if (k == 0) {
while (i <= number.length() - 1) {
s.push(number[i]);
i++;
}
}
}
if (k == 0) break;
s.push(number[i]);
i++;
}
while (k--) s.pop();//"4321" 같은 경우도 있기 때문에
while (!s.empty()) {//join
answer = s.top() + answer;
s.pop();
}
return answer;
}
요약
- stack을 이용해서 풀어보았다.
- number의 자릿수가 커지면 시간이 엄청 길어진다.
- 또다른 알고리즘이 생각 안난다.