코딩/프로그래머스 lv2
[프로그래머스] 큰 수 만들기 - 파이썬
코딩 코딩 코오딩
2021. 4. 24. 12:51
https://programmers.co.kr/learn/courses/30/lessons/42883
코딩테스트 연습 - 큰 수 만들기
programmers.co.kr
문제 설명
어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.
문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.
제한 조건
- number는 1자리 이상, 1,000,000자리 이하인 숫자입니다.
- k는 1 이상 number의 자릿수 미만인 자연수입니다.
def solution(number, k):
stack = [number[0]]
for num in number[1:]:
# stack과 k가 0보다 크고, stack의 마지막 요소가 num보다 작을 경우 반복
while len(stack) > 0 and k > 0 and stack[-1] < num:
k -= 1
stack.pop() # stack의 마지막 요소를 제거
stack.append(num) # stack에 num 추가
if k > 0: # k가 0보다 클 경우
stack = stack[:-k] # stack을 뒤에서부터 k만큼 제외
return ''.join(stack)
잘 몰라서 다른 해설을 참고했다.
내가 어려웠던점
뭔가 아이디어가 떠오르지만 세세한 조건을 만족하지 못했다.
여기서 핵심이라 생각하는 것은 들어오는
숫자와 기존에 있던 숫자의 비교 방법이다.
만약에 크면 교체하고 안크면 그냥 추가한다.(그냥 추가한다는 생각이 핵심인거 같다.)
그러고 나서 기존에 던것보다 크면 교체
이런 아이디어를 생각하는 힘을 기르자.
반응형