๋ฐ์ํ
https://www.acmicpc.net/problem/2812
๋ฌธ์
N์๋ฆฌ ์ซ์๊ฐ ์ฃผ์ด์ก์ ๋, ์ฌ๊ธฐ์ ์ซ์ K๊ฐ๋ฅผ ์ง์์ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ K < N ≤ 500,000)
๋์งธ ์ค์ N์๋ฆฌ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์ด ์๋ 0์ผ๋ก ์์ํ์ง ์๋๋ค.
์ถ๋ ฅ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ซ์์์ K๊ฐ๋ฅผ ์ง์ ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
stack์ ์ด์ฉํ์ฌ ํด๊ฒฐ โผ๏ธ
stack.peek() ์ด ํ์ฌ ๊ฐ๋ณด๋ค ์๊ณ && K > 0 (์์ง ๋บ ์ ์๋ค ) ๋ฉด pop()
๊ทธ ํ, K ๊ฐ ๋งํผ ์ ๊ฑฐํ์ง ์๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ pop ์ ํด์ฃผ๋ฉด ๋์โผ๏ธ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main_BOJ_2812_ํฌ๊ฒ๋ง๋ค๊ธฐ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int K = Integer.parseInt(stringTokenizer.nextToken());
int len = N - K;
Stack<Character> stack = new Stack<>();
String str = br.readLine();
for(int i = 0; i < str.length() ; i++){
if(!stack.empty()){
while(!stack.empty() && K > 0 && stack.peek() < str.charAt(i)){
stack.pop();
K--;
}
}
stack.push(str.charAt(i));
}
while(true){
if(stack.size() == len)
break;
stack.pop();
}
while(!stack.isEmpty()){
sb.append(stack.pop());
}
System.out.println(sb.reverse().toString());
}
}
728x90
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 2573 ] ๋น์ฐ ( JAVA / ์๋ฐ ) (0) | 2021.10.07 |
---|---|
[ ๋ฐฑ์ค / BOJ 2473 ] ์ธ ์ฉ์ก ( JAVA / ์๋ฐ ) (0) | 2021.10.07 |
[ ๋ฐฑ์ค / BOJ 2758 ] ๋ก๋ ( JAVA / ์๋ฐ ) (0) | 2021.10.04 |
[ ๋ฐฑ์ค / BOJ 2665 ] ๋ฏธ๋ก ๋ง๋ค๊ธฐ ( JAVA / ์๋ฐ ) (0) | 2021.10.03 |
[ ๋ฐฑ์ค / BOJ 1535 ] ์๋ ( JAVA / ์๋ฐ ) (0) | 2021.10.03 |