Notice
Recent Posts
Recent Comments
Link
algoqna
[BOJ2812] 크게 만들기 본문
2812번: 크게 만들기
N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
가장 큰 수가 되는 조건이 무엇인지 찾아야 한다 -> 그리디적 사고방식.
- 맨 앞에 있는 숫자가 최대한 클 수록 유리하다. 그러므로 그렇게 만들어야 한다.
- 스택 자료구조를 이용한다.
- 내가 있는 위치를 기준으로 다음에 들어갈 원소가 나보다 크다면
- 다음에 있는 원소가 기준이 되고,
-
- 다음에 있는 원소에서 이전을 검사하여 큰 값을 만날 때까지, K > 0일 때까지
-
- 이전 원소들을 빼본다.
- 그게 아니라면 그냥 스택에 푸쉬한다.
- 내가 있는 위치를 기준으로 다음에 들어갈 원소가 나보다 크다면
- 위의 과정을 거쳤는데 아직 K번을 다 뺀 상황이 아니라면 뒤에 붙은 원소들은 자연스럽게 작은 원소들임.
- 맨 뒤에서부터 K가 0이 될 때까지 스택을 pop한다.
- 이후 스택에 있는 원소를 reverse()하여 답을 출력한다.
GitHub - ssjjaa-algo/AlgoAndMySQL
Contribute to ssjjaa-algo/AlgoAndMySQL development by creating an account on GitHub.
github.com
'프로그래밍 > 기타 문제풀이' 카테고리의 다른 글
[BOJ14437] - LCA (0) | 2023.07.11 |
---|---|
[BOJ14466] 소가 길을 건너간 이유 6 (0) | 2023.07.07 |
[BOJ2146] 다리 만들기 (0) | 2023.06.29 |
[BOJ1011] Fly me to the Alpha Centauri (0) | 2023.06.28 |
[BOJ17142] 연구소 3 (0) | 2023.06.27 |