쵼쥬 2021. 10. 7. 15:47


풀이 방법 

스택을 사용해서 앞에서부터 넣어주면서 지금 넣는 자릿수가 앞의 자릿수보다 크면 제거하는 방법을 사용했다.

출력할땐 N-K개 까지만 출력해서 자릿수를 맞춰서 출력해주었다.

 

내 코드

package com.company;

import java.io.*;
import java.util.*;


public 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().split("");

        int[] array = new int[N];

        for (int i = 0; i < num.length; i++) {
            array[i] = Integer.parseInt(num[i]);
        }

        Stack<Integer> stack = new Stack<>();
        int cnt = 0;

        for(int i = 0; i < num.length; i++){
            while(cnt < K && !stack.isEmpty() && stack.peek() < array[i]){
                stack.pop();
                cnt++;
            }
            stack.push(array[i]);
        }
        for(int i = 0; i< N - K; i++){
            System.out.print(stack.elementAt(i));
        }
    }
}