공부기록
큰 수 만들기 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/42883
내 코드
import java.util.*;
class Solution {
public String solution(String number, int k) {
String answer = "";
Stack<Character> s = new Stack<>();
for(int i=0; i<number.length(); i++){
char cur_c = number.charAt(i);
while(!s.isEmpty() && k > 0 && s.peek() < cur_c){
k--;
s.pop();
}
s.push(cur_c);
}
while(k > 0){
s.pop();
k--;
}
while(!s.isEmpty()){
answer = s.pop() + answer;
}
return answer;
}
}
피드백
- 결론은 스택을 사용해서 k가 허용되는 한 내리막길을 만드는 것
- 생각해보면, 앞 자리수들만 최대한 커지면 되기 때문에 앞의 작은 수들만 빼버리면 되는 것이다.
- 뒤의 큰수가 앞의 작은수들을 빼면서도, 앞의 작은수들의 트레이스를 유지하기 위해 스택이 사용된다.
- 스택 문제를 나중에 더 풀어봅시다.