티스토리 뷰

반응형

https://www.acmicpc.net/problem/2812

 

2812번: 크게 만들기

N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 자료 구조
  • 그리디 알고리즘
  • 스택

 


 

⊙ 문제 접근 과정

 

파이썬으로 알고리즘 문제를 풀다 보면 가끔씩 이런 생각을 한다.

생각을 조금만 더 하면 문제를 풀 수 있는 건가? 아니면 생각을 덜 해야 문제를 풀 수 있는 건가?

 

풀이를 보면 정말 단순한데 내 뇌는 그 단순한걸 거부하고 어렵게 접근한다 ㅋㅋ

이번 문제는 스택에 값을 넣고 그 값이랑 다음 값이랑 비교해서 더 큰 값으로 갱신해주면 끝이다.

 

아래 풀이를 보자


 

⊙ 문제 풀이

 

N, K = map(int, input().split())

num = list(input())

delK=K

result = []

for i in range(N):
    while delK and result:
        if result[-1] < num[i]:
            result.pop()
            delK-=1
        else:
            break
    result.append(num[i])

print(''.join(result[:N-K]))

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함