✨ 문제
문제링크
✨ 제한사항
✨ 접근방법
- stack에 첫번 째 숫자를 넣는다.
- 다음에 넣을 숫자가 stack 제일 위에 있는 숫자보다 크고 cnt가 k보다 작고 stack가 비지 않을 경우 cnt += 1과 pop()을 반복한다.
- stack에 다음에 넣을 숫자를 넣는다.
- cnt가 k를 안하고 끝나는 경우가 있어서 cnt가 k가 될 때까지 stack을 pop() 해준다.
- stack에 있는 숫자들을 리턴한다.
✨ 코드
import java.util.*;
class Solution {
public String solution(String number, int k) {
String answer = "";
Stack<Character> stack = new Stack<>();
int cnt = 0;
stack.add(number.charAt(0));
for(int i=1; i<number.length(); i++){
if(stack.peek()-'0' < number.charAt(i) - '0'){
while(!stack.isEmpty() && stack.peek() -'0' < number.charAt(i) - '0' && cnt<k){
stack.pop();
cnt++;
}
}
stack.add(number.charAt(i));
}
while(cnt < k && !stack.isEmpty()){
stack.pop();
cnt++;
}
while(!stack.isEmpty()){
answer = stack.pop() + answer;
}
return answer;
}
}