import java.util.*;
class Solution {
public String solution(String number, int k) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (int i = 0; i < number.length(); i++) {
while(!stack.empty() && i - stack.size() < k) {
char num = stack.peek();
if (number.charAt(i) <= num) break;
stack.pop();
}
stack.push(number.charAt(i));
}
while (stack.size() > number.length() - k) {
stack.pop();
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < number.length() - k; i++) {
sb.append(stack.peek());
stack.pop();
}
answer = sb.reverse().toString();
return answer;
}
}
제출하니 테스트 케이스 하나가 시간초과가 떴다.
다음에 다시 도전해봐야겠다.
새로운 아이디어가 떠올라서 도전했더니 바로 통과.
역시 탐욕법은 아이디어 싸움인듯..
다른 사람의 풀이를 보고 자바 Stack 클래스에는 배열처럼 인덱스로 값을 찾을 수 있는 get 메소드가 있다는것을 알게되었다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges