[Algorithm] ๐Ÿ”ฅ๋ฐฑ์ค€ 2812 ํฌ๊ฒŒ ๋งŒ๋“ค๊ธฐ

HaJingJingยท2021๋…„ 8์›” 29์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
107/119

0. ๋ฌธ์ œ

N์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฌ๊ธฐ์„œ ์ˆซ์ž K๊ฐœ๋ฅผ ์ง€์›Œ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค K < N โ‰ค 500,000)

๋‘˜์งธ ์ค„์— N์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ
์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆซ์ž์—์„œ K๊ฐœ๋ฅผ ์ง€์› ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

1. ์•„์ด๋””์–ด

๐Ÿ’ก stack ์‚ฌ์šฉ
๐Ÿ’ก ๋น ์งˆ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜๋Š” cnt
๐Ÿ’ก stack์„ ์ด์šฉํ•˜์—ฌ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์ด ํ˜„์žฌ ๋ฌธ์ž์—ด๋ณด๋‹ค ์ž‘๊ณ  cnt<k์ด๋ฉด ๋นผ๋ƒ„

2. ํ•ต์‹ฌ ํ’€์ด

  1. stack์„ ์ด์šฉํ•˜์—ฌ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์ด ํ˜„์žฌ ๋ฌธ์ž์—ด๋ณด๋‹ค ์ž‘๊ณ  cnt<k์ด๋ฉด ๋นผ๋ƒ„
while(cnt<k && !stack.isEmpty() && stack.peek() < c) {
	stack.pop();
	cnt++;
}

3. ์ฝ”๋“œ

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));
		}
		
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€