기록하는삶
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 2812번 _ 크게 만들기 본문
백준(Python)/그리디 알고리즘(Greedy)
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 2812번 _ 크게 만들기
mingchin 2022. 3. 27. 17:12728x90
반응형
https://www.acmicpc.net/problem/2812
[문제]
N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
[입력]
첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000)
둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다.
[출력]
입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다.
[아이디어]
1) 차례대로 스택에 쌓으면서 앞 자리보다 큰 수가 나오면 앞의 자리를 계속해서 pop해준다.
2) 다 쌓은 뒤 원하는 길이만큼만 출력한다. (원래 내림차순으로 정리된 경우 pop을 하지 않는 경우도 있을 수 있다.)
a,b = map(int,input().split())
k=a-b
s = []
for x in input():
while s and s[-1]<x and b:
s.pop()
b -=1
s.append(x)
print(''.join(s[:k]))
728x90
반응형
'백준(Python) > 그리디 알고리즘(Greedy)' 카테고리의 다른 글
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 13904번 _ 과제 (0) | 2022.04.05 |
---|---|
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 2457번 _ 공주님의 정원 (0) | 2022.04.03 |
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 16953번 _ A → B (0) | 2022.01.26 |
[코딩 테스트 연습(파이썬/Python)] 백준 1026번 _ 보물 (0) | 2022.01.06 |
[코딩 테스트 연습(파이썬/Python)] 백준 2437번 _ 저울 (0) | 2022.01.01 |