[백준] 2812번 크게 만들기 JAVA 풀이

권용환·2021년 9월 6일
0

백준

목록 보기
11/36
post-thumbnail

문제 바로가기

나의 풀이

스택을 활용하면 간단하게 풀 수 있는 문제였다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        String num = br.readLine();

        Stack<Character> stack = new Stack<>();
        stack.push(num.charAt(0));
        int count = 0;
        for (int i = 1; i < n; i++) {
            char c = num.charAt(i);
            while (!stack.isEmpty() && count < k) {
                if (stack.peek() < c) {
                    stack.pop();
                    count += 1;
                } else {
                    break;
                }
            }
            stack.push(c);
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n - k; i++) {
            sb.append(stack.get(i));
        }

        System.out.println(sb);
    }
}
profile
마구 낙서하는 블로그입니다

0개의 댓글