프로그래머스 코딩테스트 고득점 Kit_탐욕법(Greedy)_큰 수 만들기
문제 보러 가기 👈 클릭!
💡 풀이
✔ 풀이 방법
- stack자료구조 사용
- number를 반복하며 stack에 값을 추가한다.
단, 현재값이 stack[-1] 값보다 클 경우 현재값 이상의 값이 나올 때 까지 stack의 값을 제거한다. (k번 이하 제거)
구현 코드 1👇
def solution(number, k):
stack = []
for num in number:
while stack and k and num > stack[-1]:
stack.pop()
k -= 1
stack.append(num)
return ''.join(stack[:len(stack) - k])
구현 코드 2👇
number를 다 반복하는 중간에 k개의 수를 제거했다면 바로 반복문을 종료하며 return하는 조건을 추가함
def solution(number, k):
stack = []
for i, num in enumerate(number):
if not k:
stack.extend(number[i:])
return ''.join(stack)
while stack and k and num > stack[-1]:
stack.pop()
k -= 1
stack.append(num)
return ''.join(stack[:len(stack) - k])
=> 코드는 늘어났지만, 더 빠르다.
Author And Source
이 문제에 관하여(프로그래머스 코딩테스트 고득점 Kit_탐욕법(Greedy)_큰 수 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@himinhee/프로그래머스-코딩테스트-고득점-Kit탐욕법Greedy큰-수-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)