N์๋ฆฌ ์ซ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ฌ๊ธฐ์ ์ซ์ K๊ฐ๋ฅผ ์ง์์ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค K < N โค 500,000)
๋์งธ ์ค์ N์๋ฆฌ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ 0์ผ๋ก ์์ํ์ง ์๋๋ค.
์ถ๋ ฅ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ซ์์์ K๊ฐ๋ฅผ ์ง์ ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ก stack ์ฌ์ฉ
๐ก ๋น ์ง ๊ฐ์๋ฅผ ์กฐ์ ํ๋ cnt
๐ก stack์ ์ด์ฉํ์ฌ ์์ ๋ค์ด์๋ ๊ฒ์ด ํ์ฌ ๋ฌธ์์ด๋ณด๋ค ์๊ณ cnt<k์ด๋ฉด ๋นผ๋
while(cnt<k && !stack.isEmpty() && stack.peek() < c) {
stack.pop();
cnt++;
}
import java.util.*;
import java.io.*;
public class BOJ_2812 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
int n = Integer.parseInt(s[0]);
int k = Integer.parseInt(s[1]);
String num = br.readLine().trim();
Stack<Integer> stack = new Stack<>();
int cnt = 0;
for(int i=0; i<num.length(); i++) {
int c = num.charAt(i) - '0';
while(cnt<k && !stack.isEmpty() && stack.peek() < c) {
stack.pop();
cnt++;
}
stack.push(c);
}
for(int i=0; i<n-k; i++) {
System.out.print(stack.elementAt(i));
}
}
}
์ฑ๊ณตโจ