
내가 작성한 코드
import java.util.*;
class Solution {
public String solution(String number, int k) {
Deque<Character> stack = new ArrayDeque<>(); // 스택을 사용하여 숫자를 저장
for (char num : number.toCharArray()) {
// 스택에서 뒤의 숫자가 더 작으면 제거
while (!stack.isEmpty() && k > 0 && stack.peekLast() < num) {
stack.pollLast();
k--;
}
stack.offerLast(num);
}
// 아직 제거해야 할 숫자가 남았다면 뒤에서 제거 >> 큰수가 앞에 있는 경우
while (k > 0) {
stack.pollLast();
k--;
}
StringBuilder answer = new StringBuilder();
for (char c : stack) {
answer.append(c);
}
return answer.toString();
}
}
Deque
: 앞 뒤로 삽입, 삭제가 가능한 큐
다른 사람의 코드
import java.util.*;
class Solution {
public String solution(String number, int k) {
char[] result = new char[number.length() - k]; // 결과를 담을 배열
Stack<Character> stack = new Stack<>();
for (int i = 0; i < number.length(); i++) {
char c = number.charAt(i);
// 스택이 비어있지 않고, 현재 문자 c가 스택의 top보다 크며, k가 0보다 클 때
while (!stack.isEmpty() && stack.peek() < c && k-- > 0) {
stack.pop();
}
stack.push(c);
}
// 결과 배열에 담기 >> 뒤에 있는 작은 수 걸러짐
for (int i = 0; i < result.length; i++) {
result[i] = stack.get(i);
}
return new String(result);
}
}
Share article