본문 바로가기
Algorithm/BOJ

[백준] 2812번 - 크게 만들기 (파이썬)

by _temp 2022. 3. 9.

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

# 크게 만들기
N, K = map(int, input().split())
arr = list(map(int, input().strip()))

result = []
for x in arr:
    if not result:
        result.append(x)
        continue
    while result and result[-1] < x and K != 0:
        K -= 1
        result.pop()
    result.append(x)

while K != 0:
    K -= 1
    result.pop()

print(*result, sep='')

 

자료구조(스택), 그리디

1. result 리스트를 정의하고 입력받은 값들을 하나씩 순회

    - result 리스트가 비어 있다면 append하고 continue

    - result[-1]보다 현재 값이 더 크다면 pop하고 K-- (pop할 수 있는 횟수) 반복

    - 이후, append

2. K가 0이 될 때까지 나머지 pop

3. result 출력

 

전에 프로그래머스에서 풀었던 문제이다. 그래서 쉽게 풀 수 있었다.

 

[프로그래머스] 고득점Kit - 그리디

3. 큰 수 만들기(Lv. 2)

 

[프로그래머스] 고득점Kit (6) - 그리디(1) (파이썬)

1. 체육복 (Lv. 1) # 체육복 def solution(n, lost, reserve): lost = set(lost) reserve = set(reserve) answer = 0 for x in (lost-reserve): if x-1 in (reserve-lost): reserve.remove(x-1) continue elif x+1..

2hs-rti.tistory.com