풀이 방법
스택을 사용해서 앞에서부터 넣어주면서 지금 넣는 자릿수가 앞의 자릿수보다 크면 제거하는 방법을 사용했다.
출력할땐 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));
}
}
}
'코딩테스트 > [백준] 코딩테스트 연습' 카테고리의 다른 글
에너지 모으기 - 16198번 (0) | 2021.10.08 |
---|---|
빙산 - 2573번 (0) | 2021.10.07 |
짐 챙기는 숌 (0) | 2021.10.07 |
돌다리 건너기 - 2602번 (0) | 2021.10.06 |
괄호 제거 - 2800번 (0) | 2021.10.06 |