반응형
문제
N자리 숫자가 주어졌을 때 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다 (1 <= K < N <= 500,000)
둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다.
문제풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt(); //n자리
int K = in.nextInt(); //K개를 지워서 얻을 수 있는 가장 큰 수
String num = in.next();
Stack<Character> stack = new Stack<>();
for (char c : num.toCharArray()) {
while (!stack.isEmpty() && stack.peek() < c && K > 0) {
stack.pop();
K--;
}
stack.push(c);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < stack.size() - K; i++) {
sb.append(stack.get(i));
}
System.out.println(sb);
}
}
마지막에 주의해야할 점은 K의 개수가 남아있을 수 있기 때문에 stack.size() - K를 해줘야한다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 12919 A와 B 2 (자바 풀이) (0) | 2024.07.27 |
---|---|
[백준] 14889 스타트와 링크 (자바 풀이) (0) | 2024.07.26 |
[백준] 1987알파벳 (0) | 2024.07.24 |
백준 [2869 달팽이는 올라가고 싶다] (1) | 2023.02.19 |
백준 [1193 분수찾기] (0) | 2023.02.18 |