[프로그래머스-Lv2] 큰 수 만들기 / Python
📚 Problem Solving/Programmers
import sys
input = sys.stdin.readline
k = int(input())
number = input()
def solution(number, k):
collected = []
for (i, num) in enumerate(number):
while collected and collected[-1] < num and k > 0:
collected.pop()
k -= 1
if k == 0:
collected += number[i:]
break
collected.append(num)
collected = collected[:-k] if k > 0 else collected
return "".join(collected)
print(solution(number, k))
해설
collected라는 리스트를 사용해 number의 수 하나하나를 저장한다. 우선, collected의 값이 for문의 현재 값보다 작으면 모두 collected에서 제거한 후 k를 1씩 줄인다.
k가 0이면 나머지 number의 값들을 collected에 합쳐주고 반복문을 멈춘다.
반복문이 끝나고 k가 0보다 크다면 이미 number는 내림차순으로 정렬되어 있다는 의미이기 때문에 뒤에서 k개를 제거한 숫자가 답이다. 반대로 k가 0이면 반복문에서 빠져나왔을 때의 collected가 답이 된다.
'📚 Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스-Lv2] 구명보트 / Python (0) | 2021.06.15 |
---|---|
[프로그래머스-Lv2] 주식가격 / Python (0) | 2021.06.15 |
[프로그래머스-Lv2] H-index / Python (0) | 2021.06.14 |
[프로그래머스-Lv2] 다리를 지나는 트럭 / Python (0) | 2021.06.14 |
[프로그래머스-Lv2] 위장 / Python (0) | 2021.06.14 |